php公共函数库,php算法库

本文目录一览:

9个必须知道的实用PHP函数和功能

即使使用 PHP 多年 也会偶然发现一些未曾了解的函数和功能 其中有些是非常有用的 但没有得到充分利用 并不是所有人都会从头到尾一页一页地阅读手册和函数参考!

任意参数数目的函数

你可能已经知道 PHP 允许定义可选参数的函数 但也有完全允许任意数目的函数参数的方法 以下是可选参数的例子

以下为引用的内容

// function with optional arguments function foo($arg = $arg = ) {

echo “arg : $arg n”;  echo “arg : $arg n”;

}

foo( hello world ); /* prints: arg : hello arg : world */

foo(); /* prints: arg : arg : */

现在让我们看看如何建立能够接受任何参数数目的函数 这一次需要使用 func_get_args() 函数

以下为引用的内容

// yes the argument list can be empty function foo() {

// returns an array of all passed arguments  $args = func_get_args();

foreach ($args as $k = $v) {   echo “arg” ($k+ ) “: $vn”;  }

}

foo(); /* prints nothing */

foo( hello ); /* prints arg : hello */

foo( hello world again ); /* prints arg : hello arg : world arg : again */

使用 Glob() 查找文件

许多 PHP 函数具有长描述性的名称 然而可能会很难说出 glob() 函数能做的事情 除非你已经通过多次使用并熟悉了它 可以把它看作是比 scandir() 函数更强大的版本 可以按照某种模式搜索文件

以下为引用的内容

// get all php files $files = glob( * php );

print_r($files); /* output looks like: Array (     [ ] = phptest php     [ ] = pi php     [ ] = post_output php     [ ] = test php ) */

你可以像这样获得多个文件

以下为引用的内容

// get all php files AND txt files $files = glob( * {php txt} GLOB_BRACE);

lishixinzhi/Article/program/PHP/201311/21182

php中如何建立函数库

Step 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” 16的前面(当然,如果你熟悉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

810

怎么调用Common.php里面的公共函数

据个人理解,如何调用要看你这个public 函数是怎么定义的,如果是定义的某个类的成员函数,你先要 include / require 引入类所在的单元文件,实例化该类,再调用这个函数就可以了。

如何自定义公共函数以及存放位置

注:本条为本人添加。公共函数位于 system/core/Common.php 文件中,大家可以在这里定义自己的公共函数。

CodeIgniter 使用了一些全局定义的函数来完成操作,在任何情况下你都能够使用这些函数。使用他们不需要载入任何类库或辅助函数。

is_php(‘version_number’)

is_php() 判断正在使用的PHP的版本号是否高于你所提供的 version_number 。

if (is_php(‘5.3.0’))

{

$str = quoted_printable_encode($str);

}

如果已安装的PHP版本号等于或高于你所提供的版本号,本函数将返回布尔值 TRUE。如果安装的PHP版本号低于你所提供的那个版本号,本函数将返回 FALSE。

is_really_writable(‘path/to/file’)

在Windows平台,is_writable()函数在实际没有文件写权限时也返回真。那是因为,只有文件有只读属性时,操作系统才向PHP报告为假。这个函数依靠对文件的先行写入来判断是否真的具有写权限。 通常情况下,只有在这个信息不可靠的平台上才推荐使用。

注:此函数也可用于判断文件夹是否有可写权限。

if (is_really_writable(‘file.txt’))

{

echo “I could write to this if I wanted to”;

}

else

{

echo “File is not writable”;

}

config_item(‘item_key’)

尽管使用config_item()函数能够取得单个配置信息,但是配置类是访问这些信息的优选方式。更多信息请见类库参考。

注:此函数获取的是从config文件直接获取的值,无法取得配置类 set_item() 函数变更后的值。

show_error(‘message’), show_404(‘page’), log_message(‘level’, ‘message’)

这些函数在错误处理中描述。

set_status_header(code, ‘text’);

允许你手动设置服务器状态头(header)。例如:

set_status_header(401);

// 将header设置为: Unauthorized

单击这里 查看全部的header列表。

remove_invisible_characters($str)

这个函数能防止在ASCII字符之间插入空字符,如Java\0script.

html_escape($mixed)

利用此功能可以方便的使用htmlspecialchars()函数。它接受字符串和数组。有助于防止跨站脚本攻击(XSS)。

thinkphp3.2公共函数写在哪

如果你想整站都可以调用,那你就写在thinkphp框架下的common/functions.php文件最后,如果你只想在前台调用,那你就先创建前台目录,在前台目录里下的common创建一个function.php文件,把公共函数写在里面既可。

thinkphp common公共函数 命名

加载common.php的代码在框架中ThinkPHP/Lib/Core/Thinkphp.class.php文件是固定的。

……

// 加载项目公共文件

if(is_file(COMMON_PATH.’common.php’)) {

include COMMON_PATH.’common.php’;

// 编译文件

if(!APP_DEBUG) $compile .= compile(COMMON_PATH.’common.php’);

}

……..

但是Thinkphp提供了,LOAD_EXT_FILE配置文件参数,可以在项目配置文件中定义LOAD_EXT_FILE参数,

例如:

“LOAD_EXT_FILE”=”user,db”

其次在项目Common目录中新建user.php与db.php文件.

通过上面的设置,就会执行过程中自动载入项目公共目录下面的扩展函数库文件user.php和db.php,这样就可以直接在项目中调用扩展函数库user.php和db.php中的函数了,而且扩展函数库的函数修改是实时生效的。

手动载入

如果你的函数只是个别模块偶尔使用,则不需要采用自动加载方式,可以在需要调用的时候采用load方法手动载入,方式如下:

load(“@.user”)

@.user表示加载当前项目的user函数文件,这样就可以直接user.php扩展函数库中的函数了。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/259372.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 16:28
下一篇 2024-12-15 16:28

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python实现爬楼梯算法

    本文介绍使用Python实现爬楼梯算法,该算法用于计算一个人爬n级楼梯有多少种不同的方法。 有一楼梯,小明可以一次走一步、两步或三步。请问小明爬上第 n 级楼梯有多少种不同的爬楼梯…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Harris角点检测算法原理与实现

    本文将从多个方面对Harris角点检测算法进行详细的阐述,包括算法原理、实现步骤、代码实现等。 一、Harris角点检测算法原理 Harris角点检测算法是一种经典的计算机视觉算法…

    编程 2025-04-29
  • 数据结构与算法基础青岛大学PPT解析

    本文将从多个方面对数据结构与算法基础青岛大学PPT进行详细的阐述,包括数据类型、集合类型、排序算法、字符串匹配和动态规划等内容。通过对这些内容的解析,读者可以更好地了解数据结构与算…

    编程 2025-04-29
  • 瘦脸算法 Python 原理与实现

    本文将从多个方面详细阐述瘦脸算法 Python 实现的原理和方法,包括该算法的意义、流程、代码实现、优化等内容。 一、算法意义 随着科技的发展,瘦脸算法已经成为了人们修图中不可缺少…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • 神经网络BP算法原理

    本文将从多个方面对神经网络BP算法原理进行详细阐述,并给出完整的代码示例。 一、BP算法简介 BP算法是一种常用的神经网络训练算法,其全称为反向传播算法。BP算法的基本思想是通过正…

    编程 2025-04-29
  • 粒子群算法Python的介绍和实现

    本文将介绍粒子群算法的原理和Python实现方法,将从以下几个方面进行详细阐述。 一、粒子群算法的原理 粒子群算法(Particle Swarm Optimization, PSO…

    编程 2025-04-29

发表回复

登录后才能评论