巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

PHP函数经常利用用法小结

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-05-01 19:06:14 阅读数: 98

把戏函数

 

把戏函数是PHP中内置的说话特征,当法式履行到某种环境时,若是界说了这些把戏函数(php手册中称之为“Overloading),则PHP会挪用他们,同时也会传入呼应的参数,能够以为是PHP履行进程中的钩子函数。罕见的把戏函数有__construct, __destruct , __call, __get, __set, __isset, __unset __sleep, __wakeup, __toString, __clone __autoload 。它们 能够用来主动加载包罗文件,完成提早履行(近似于.Net中的属性拜候器)、渣滓收受接管、工具clone等操纵,举个__autoload的例子,其余把戏函数参见 Magic Method

 

__autoload($class_name):用来主动加载包罗文件,免得includerequire,对机能有必然影响,但普通环境下可疏忽。

 

上面是一个简略的例子

function __autoload($class_name)  

{

    require_once $class_name . ".class.php";

}

把它放入common.php等全局包罗文件中,当新建一个工具时,比方 $obj=new Class_A,若是php没法找到Class_A,则会把"Class_A" 作为参数$class_name,履行 __autoload函数。如许就能够到达主动包罗头文件的目标了。

 

别的附赠几个常量和函数:

__FILE__ :把戏常量,获得以后源代码文件的途径(含文件名)

__CLASS__:把戏常量,获得以后类的类名(辨别巨细写的)。

array get_included_files ( void ):内置函数,前往经由进程include(), include_once(), require() require_once()包罗的文件列表,但不包罗经由进程php.ini设置装备摆设文件中所设置的auto_prepend_file项。别的get_required_files()只是get_included_files ( void )的又名。

string dirname ( string path ):前往途径中的目次局部。

 

匿名函数

 

PHP5.3之前利用匿名函数,能够经由进程create_function()来建立匿名函数,

$func=create_function("$a,$b", "

if ($a == $b)

{

        return 0;

}

 return ($a< $b) ? -1 : 1;

");

PHP5.3中,能够间接利用lamda抒发式

$func=function($a,$b)

{

if ($a == $b)

{

        return 0;

}

 return ($a< $b) ? -1 : 1;

}

而后能够作为参数传入其余函数,如:usort($arr,$func); 也能够间接挪用,$func(3,4);

 

PHP5.3中利用闭包

function foo($arg1)

{

$var=3;

$inner=function($innerArg) use($arg1,$var)

{

   return $innerArg+$arg1/$var;

};

echo $inner(5);

}

闭包被当做一个内置类,可是不javascript那末矫捷,这个类不能有属性。$inner->a=5;是不法的。

 

嵌套函数

 

嵌套函数能够在父函数体外面界说函数,如:

function outer()

{

    $out_var=1;

    function inner()

    {

        var_dump($out_var);//输入NULL,没法拜候到$out_var,申明global也不行,$out_var不是全局变量

        echo "call inner ";

    }

    //echo "call outer ";

 

    inner();//若是不挪用inner(),则在拜候outer()时也不会被挪用

}

 

outer();

inner();//固然,函数是全局的,必须先挪用outer(),不然inner()挪用会报错(函数未界说)

 

前提函数

 

$debug=false;

if($debug===true)

{

    function foo()

    {

        echo "foo";

    }

}

 

foo();

 

相称于前提编译了,从这里咱们能够预测到,为甚么上文中outer()挪用之前,inner()是没法挪用的。由于innerouter()挪用之前还未被“编译”(只是预测,未深切研讨)。

 

 

函数静态挪用

 

函数名能够是变量名。

function foo()

{

echo "call foo";

}

$func="foo";

$func();

此体例比拟风险,倡议利用白名单体例将可用的函数名写在设置装备摆设文件中,或函数名都有同一前缀,比方$func="act_".$funcName;。别的在挪用之前可用function_exists ($funcName)来查抄函数是不是存在。

 

经由进程内置函数挪用函数,call_user_func(callback function ,[, mixed parameter [, mixed ...]] ),对不肯定的函数名,肯定的参数能够利用此函数挪用,若是参数也不肯定能够经由进程call_user_func_array( callback function, array param_arr )

别的,能够经由进程get_defined_functions()来获得一切已界说的函数(注重是一切,包罗内置函数)

 

挪用类的体例例传入一个数组作为参数,此数组第一个元素是实例或类名,第二个元素是体例名:

class myclass

{

    public $age=21;

 

    function echo_age()

    {

        echo $this->age;

    }

    static function s_echo_age()

    {

        echo 22;

    }

    function i_echo_age()

    {

        echo 23;

    }

}

$c=new myclass;

$classname = "myclass";

//挪用实例体例,若是call_user_func(array($classname , "echo_age"));则会报错,$this未指向任何实例

call_user_func(array($c, "echo_age"));

echo " ";

//挪用实例体例,若是不援用$this变量,则不会有题目

call_user_func(array($classname, "i_echo_age"));

echo " ";

//挪用静态体例,传入类名或实例都可

call_user_func(array($classname, "s_echo_age"));

echo " ";

call_user_func(array($c, "s_echo_age"));

 

 

获得函数参数

 

经由进程此体例能够完成很是矫捷的重载,但轻易使逻辑变得担任,过度利用。

func_get_arg ( int arg_num )获得第arg_num个参数(从0起头计数)

func_num_args()获得参数总个数

func_get_args()获得一切参数。

 

用三行代码完成Gof中的一个设想形式:

function call_it($func)

{

$args=func_get_args();

array_shift($args);//去掉第一个参数,那是函数名

call_user_func_array($func,$args);

}

 

function add($a,$b)

{

    echo $a+$b;

}

function sqr($a)

{

    echo $a*$a;

}

call_it("add",1,2);

echo " ";

call_it("sqr",2);

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

02
05月
若何让你的伪首创成为搜素引擎喜爱内容?

从这个标题来看,仿佛是一个伪命题,对搜刮引擎而言,绝大大都环境是不会喜好伪首创的,由于对搜刮引擎而言,伪首创搞得再好,也不能够有首创的内... >>概况

03
05月
网站优化 搜刮引擎收录网页的四个阶段

作为SEO从业者,不只要被搜刮引擎抓取,还要被收录,最主要的是在收录后有杰出的排名,本文将简略阐发下搜刮引擎收录网页的四个阶段。每一个网站、每... >>概况

20
04月
详解canvas在圆弧四周绘制文本的两种写法

教程是间接按弧度停止编写的本身又试着用角度从头编写了一份,有些不同,总结起来仍是用弧度比拟便利,固然两种哪一种懂得的轻易能够自行考虑写代码偶然... >>概况

20
10月
本身建造网页时须要在乎的关键

网页建造有良多的关键题目须要在乎的,只要把这些关键连系在一路完成,能力够把一个的网站完全的建造出来,虽然有良多的都是分隔的局部,但是一个根基... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站