php简单的代码重用与函数编写

  • 代码重用
    • require() 语句执行失败会给出致命的错误 一个fatal error, 直接结束脚本
    • include() 语句执行失败会给出警告 一个warning警告
    • require_onece(),include_once() 确保被引入文件只能被引入一次

辨析:

  • 1.include() 函数会将指定的php脚本读入并且执行里面的程序。
    例如:include('a.php');
    被导入的脚本中的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到 include() 函数的位置相同的变量范围(variable scope)

  • 2.include_once()函数的作用和 include() 是几乎相同的
    唯一的差别在于 ==include_once() 函数会先检查要导入的脚本是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入该脚本这项功能有时候是很重要的,比方说要导入的脚本里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个档案,在第二次导入的时候便会发生错误讯息,因为 PHP 不允许相同名称的函数被重复宣告第二次)。

  • 3.require()函数会将目标脚本的内容读入,并且把自己本身代换成这些读入的内容。 require() 通常来导入静态的内容,而include() 则适合用来导入动态的程序代码。

  • 4.如同 include_once()函数,require_once() 函数会先检查目标档案的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。

  • 能将页眉和脚注加入到页面

    • auto_prepend_file() 在页眉加入
    • auto_append_file() 在脚注加入
    • apache使用前面那两个函数要在.htaccess
    • 使用.htaccess方法的缺点就是目录中每个被读取和被解析的文件每次都要进行处理,而不是只在启动时处理一次,所以性能会有所降低。

使用PHP函数

  • $variable 可以是任意类型的PHP变量,==包括数组或对象==,甚至其他函数。
  • 调用未定义函数
    • 会出现各种报错,这个报错信息很重要
  • 函数调用将不区分大小写
    • function_name(),Function_Name(),FUNCTION_NAME()都是有效的。而变量名区分大小写的
  • 自定义函数
    • 将经常用到的函数包含到一个文件是非常不错的选择
    • 函数变量传递时,加入在形参的时候指定是null,那么在没有传值进来之前是就是null
  function create_table($data, $header=NULL, $caption=NULL) {
echo '';
if ($caption) {
echo "";
}
if ($header) {
echo "";
}
reset($data);
$value = current($data);
while ($value) {
echo "\n";
$value = next($data);
}
echo '
$caption
$header
$value
'; } $my_data = ['First piece of data','Second piece of data','And the third']; $my_header = 'Data'; $my_caption = 'Data about something'; create_table($my_data, $my_header, $my_caption);
  • 引用传递和值传递
    • 函数参数调用的方式常规方式是值传递。当传递一个参数的时候,一个包含传入值的新变量将被创建。它是原来那个变量的拷贝。你可以以任意方式修改它,但函数外部原来变量值是不会改变的。
    • 函数定义的参数名前面加一个“&”来指定参数的按引用传递。不需要对函数调用方式进行改变。
function increment(&$value, $amount = 1) {
$value = $value + $amount;
}

使用return关键字

  • "return"将终止函数的执行
  • "return" 返回值

递归实现

  • 递归就是函数调用函数本身
  • 关键在于递和归,大部分人只看到了递,却看不到归
  • 递归比循环慢,耗内存,多用循环。

匿名(闭包函数)实现

bool array_walk(array arr,callable func[,mixed userdata])

closures.php —Using a Variable from the Global Scope Inside a Closure
"; };
$products = [ 'Tires' => 100,
'Oil' => 10,
'Spark Plugs' => 4 ];
$markup = 0.20;
$apply = function(&$val) use ($markup) {
$val = $val * (1+$markup);
};
array_walk($products, $apply);
array_walk($products, $printer);
?>

你可能感兴趣的:(php简单的代码重用与函数编写)