php
在PHP中如何正确创建函数?
一、在PHP中如何正确创建函数?
tep 1 =>
php的扩展模块都放在 ext/ 目录下,比如说 snmp模块、mysql模块。 我们要建立自己的模块,就要在ext目录下为自己的模块建一个目录。比如,我们要做一个分析config文件的模块,命名为pconfig模块(parse config的简写),需在ext下建立目录pconfig。将我写好的7个文件copy到该目录下,另外需对主目录下的configure和internal_functions.c作一些修改。
Step 2 =>
Makefile.am Makefile.in
是模板文件,用户执行configure时,会调用这两个文件,生成编译时所用的Makefile文件。修改时将小写的pconfig换成你自己的模块名,别忘了把大写的PCONFIG也替换掉(不要告诉我你不会vi的替换语句)。config.m4也是执行configure将会调用的检测脚本程序,以后我们来讨论这些脚本程序的更深入的修改。现在你只需要把pconfig该成你的模块就可以了。对config.h.stub和setup.stub也如法炮制。其实setup.stub也没什么用。
Step 3 =>
php3-pconfig.h 头文件中
extern php3_module_entry pconfig_module_entry;
#define pconfig_module_ptr &pconfig_module_entry
#define phpext_pconfig_ptr pconfig_module_ptr
这几行定义了模块的入口,将入口注册到php后,php会通过模块入口找到你写的函数
下面几个函数定义是用宏进行定义的,展开以后其实就是 php3_minit_pconfig , php3_rinit_pconfig ……分别在你的模块初试化或结束时被调用,如果你的模块很简单,也就不需要这些定义了
extern PHP_MINIT_FUNCTION(pconfig);
extern PHP_RINIT_FUNCTION(pconfig);
extern PHP_MSHUTDOWN_FUNCTION(pconfig);
PHP_MINFO_FUNCTION(pconfig);
这是你的函数声明,将来写在php脚本语句中的函数名就是在PHP_FUNCTION中定义的名字。
PHP_FUNCTION(pconfig_test);
如果有多个,还可以继续往下加
PHP_FUNCTION(pconfig_parsefile);
PHP_FUNCTION(pconfig_release); …….
Step 4 =>
接下来我们看最重点的C代码了
function_entry pconfig_functions[] = {
PHP_FE(pconfig_test, NULL)
{NULL, NULL, NULL}
};
定义的是你的函数的入口(前面我们提到过模块的入口),按照格式将你在头文件中定义的函数写进去吧。注意,这是用宏定义的,不要管语法是否正确。以后我们具体讨论这些宏的用法。
php3_module_entry pconfig_module_entry = {
"pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES
};
注册模块的入口信息,比如模块名,函数接口,初试化模块将调用的函数等等,如果你的模块不执行复杂操作的话,可以忽略掉他们,写成
php3_module_entry pconfig_module_entry = {
"pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES
};
Step 5 =>
写你自己的函数
在头文件和function_entry处,我们已经定义了自己的函数pconfig_test,现在我们就来实现pconfig_test的功能。就比如执行两个数相加的和吧。
static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)
{ ......
}
PHP_FUNCTION(pconfig_test)
{
_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
当系统调用pconfig_test时,会调用你的_php3_pconfig_test函数,当然你也可以把_php3_pconfig_test里的内容直接写在PHP_FUNCTION(pconfig_test)中,这样做只是程序结构比较清晰。注意:不要将_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展开后实际上就是php3_pconfig_test!
Step 6 =>
好了,现在我们开始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(当然,如果你熟悉configure的话,可以加在任何合适的地方)加上下面几句话
if test "${with_pconfig+set}" = set; then
withval="$with_pconfig"
# Add your lib in here
EXTRA_LIBS="$EXTRA_LIBS"
# Add your include path in here
INCLUDES="$INCLUDES"
EXT_SUBDIRS="$EXT_SUBDIRS pconfig"
EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"
EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"
EXT_STATIC="$EXT_STATIC pconfig"
fi
修改internal_functions.c,在头文件定义中加入#include "ext/pconfig/php3_pconfig.h"
在zend_module_entry数组中加入phpext_pconfig_ptr,
Step 7 =>
从新configure,带上需要的参数,不要忘记的是在参数里加入 --with-pconfig
Step 8 =>
index.php3
<? echo pconfig_test(123,678)."
"; ?>
执行%>php index.php3
二、php函数mkdir实现递归创建层级目录?
1
2
3
if(is_dir(dirname($path))){ //判断./1/2/3 已经有次文件目录
return mkdir($path); //这里执行的$path是多少,是整个目录吗,我理解成./1/2/3/4,很疑惑,所以请 //教下大家
}
这里的两个 $path 很显然是一样的,你都知道 dirname($path) 是 ./1/2/3 那么很显然 $path 应该是 ./1/2/3/4 了,为什么后面你又要说一个 ./1/2/3/4/5/6/7 呢
这个递归函数写得不好,而且还是多余的,现在 PHP 的 mkdir 函数已经能建多级目录了,只要第三个参数为 true 就可以:
1
mkdir('./1/2/3/4/5/6/7', 0777, true);
三、php中mkdir函数可以创建多级目录吗?
可以的,使用第三个参数就好,例子如下:mkdir("c:/a/b/c",0777,true);C盘下面创建a/b/c文件夹,并赋予0777的权限
四、怎么创建PHP文件?
在桌面空白处单击右键->新建->文本文件.双击打开此文本文件后,在里面输入PHP代码,输入完后,选择文件->另存为...这里输入你的PHP文件名,扩展名为PHP.当然你也可以用网页编辑工具,更直观和方便,如:Dreamweaver,直接新建一个网页文件,选择PHP文件就OK了.
五、php关于intval函数?
intval函数:变量转成整数类型; 函数语法: int intval(mixed var, int [base]); 函数返回值: 整数; 函数种类: PHP 系统功能; 函数内容:本函数可将变量转成整数类型。可省略的参数 base 是转换的基底,默认值为 10。转换的变量 var 可以为数组或类之外的任何类型变量。
六、PHP的require函数?
require()是php的内置函数,作用是引入或者包含外部php文件。 工作原理:当本身php文件被执行时,则外部文件的内容就将被包含进该自身php文件中;当包含的外部文件发生错误时,系统将抛出错误提示,并且停止php文件的执行。 注意:使用require时,一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误 。 比如cl.php,ts.php两个文件,ts.php要用到cl.php文件中的函数,需要在ts.php中引入或者包含cl.php即可.示例如下:cl.php<?phpfunction show(){ echo "cl.php文件中的show方法被调用了!"; }?>ts.php<?phprequire 'cl.php';show();?>运行结果:
七、php助手函数作用?
1.提高程序的重用性;
2.提高软件的可维护性;
3.提高软件的开发效率
4.提高软件的可靠性
5.控制程序设计的复杂性
函数是程序开发中非常重要的内容,因此,对函数的定义,调用和值的返回等,要特别注意理解和应用,并通过上机高度加以巩固.提高程序的重用性;提高软件的可维护性;提高软件的开发效率,提高软件的可靠性,控制程序设计的复杂性
八、php延时函数的特性?
PHP延迟几秒后执行,PHP延迟执行,PHP停顿几毫秒后执行 usleep() 和 sleep()
九、PHP错误处理函数?
trigger_error() 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用 定义和用法trigger_error() 函数创建用户定义的错误消息。trigger_error() 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。 如果指定了一个不合法的错误类型,该函数返回 false,否则返回 true。 语法trigger_error(error_message,error_types) 参数描述error_message必需。规定错误消息。长度限制为 1024 个字符。error_types可选。规定错误消息的错误类型。 可能的值: •E_USER_ERROR •E_USER_WARNING •E_USER_NOTICE 复制代码代码如下:My ERROR[$errno] $errstr"; echo "Fatal error in line $errline of file $errfile"; exit(1); break; case E_USER_WARNING: echo "
My WARNING
[$errno] $errstr"; break; default: echo "Unknown error type:[$errno] $errstr"; break; } } set_error_handler("myError"); $age=-100; if($age=0',E_USER_ERROR); } ?>十、jquery 创建函数
jQuery创建函数指南
jQuery是一种流行的JavaScript库,被广泛用于网页开发和提升用户体验。其中,创建函数是jQuery中的重要概念之一,它可以帮助我们更高效地编写代码并实现各种功能。
为什么需要创建函数?
在网页开发过程中,我们经常会遇到需要重复使用某段代码的情况,这时候创建函数就能够发挥作用。通过封装一段代码为函数,我们可以在需要的地方多次调用,避免重复编写相同的代码,提高代码的复用性和维护性。
如何创建函数?
在jQuery中,创建函数非常简单。首先,我们需要使用关键字function定义一个函数,然后在函数体内编写具体的代码逻辑。下面是一个简单的例子:
function 我的函数名() {
// 在这里编写代码逻辑
}
// 调用函数
我的函数名();
函数参数和返回值
有时候,函数需要接受参数,并且可以返回处理后的结果。在jQuery中,函数的参数和返回值非常灵活。我们可以根据实际需求来定义参数个数和返回值类型。以下是一个带参数和返回值的函数示例:
function 计算总和(参数1, 参数2) {
var 总和 = 参数1 + 参数2;
return 总和;
}
// 调用函数并输出结果
var 结果 = 计算总和(5, 3);
console.log(结果); // 输出结果为8
函数的作用域和闭包
在jQuery中,函数的作用域和闭包是我们需要了解的重要概念。作用域指的是变量的可访问范围,而闭包则是函数和其相关的引用环境。通过合理地运用作用域和闭包,我们可以避免变量冲突和提升代码的执行效率。
常见函数示例
下面列举几个常见的函数示例,供大家参考:
- 隐藏元素:函数隐藏元素的操作非常常见,可以通过设置元素的display属性为"none"来实现。
- 显示提示:函数显示提示信息给用户,可以通过添加一个提示框并设置显示样式来实现。
- 表单验证:函数用于验证表单输入,可以根据用户输入的内容进行验证并给出相应提示。
通过学习和掌握jQuery创建函数的方法和技巧,我们可以更加高效地编写代码,提升开发效率和用户体验。希望以上内容能对您有所帮助。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...