多数大学生出来选择的工作和专业无关
首页 > 专业知识

php基础知识:函数基础知识

时间:2018-08-03 19:30:50 [来源]:郑州PHP培训学校

   php基础知识:函数基础知识

  函数,所有的语言都有,所以这里只说重点:
  1>定义:php不需要定义返回值类型。
  2>函数名是非大小写敏感的,不过在调用函数的时候,通常使用其在定义时相同的形式。
  3>PHP 中的所有函数和类都具有全局域,可以在内部定义外部调用,反之亦然。
  4>PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。
  5>在 PHP 中可以调用递归函数。但是要避免递归函数/方法调用超过 100-200 层,因为可能会破坏堆栈从而使当前脚本终止。
  6>有默认值的参数必须在参数表的最后几个。
  7>变量函数。可以通过对函数重命名的方式调用函数。
  例如:
  function helloWorld($name='PHP')
  {
  echo "Hello World ".$name;
  }
  $func=helloWorld;
  $func();//调用helloWorld函数
  $func('Saga');//带参数的调用helloWorld
  8>可变长度参数列表:
  主要依靠三个函数:func_num_args(),func_get_arg(),和 func_get_args()说明如下:
  int func_num_args ( ) 返回传递的参数的数量.(PHP4,PHP5)mixed func_get_arg ( int arg_num ) 返回第arg_num个参数(从0开始计数)array func_get_args ( ) 返回参数表述组。
 
  php基础知识:类与对象自动加载对象
  自动加载对象:
  很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件。一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件列表。
  在 PHP 5 中,不再需要这样了。可以定义一个 __autoload 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
  本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClass2 类。
  function __autoload($class_name) {
  require_once $class_name . '.php';
  }
  $obj  = new MyClass1();
  $obj2 = new MyClass2();
  注意:
  在 __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误。
  类与对象构造函数和析构函数
  构造函数
  PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
  注意:
  如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。(??和其他语言明显不同??)例10.8.使用新标准的构造函数
  class BaseClass {
  function __construct() {
  print "In BaseClass constructor\n";
  }
  }
  class SubClass extends BaseClass {
  function __construct() {
  parent::__construct();
  print "In SubClass constructor\n";
  }
  }
  $obj = new BaseClass();
  $obj = new SubClass();
  为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。
  析构函数
  PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
  例10.9.析构函数示例
  class MyDestructableClass {
  function __construct() {
  print "In constructor\n";
  $this->name = "MyDestructableClass";
  }
  function __destruct() {
  print "Destroying " . $this->name . "\n";}
  }
  $obj = new MyDestructableClass();
  和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。 (??和其他语言明显不同??)注意:
  析构函数在脚本关闭时调用,此时所有的头信息已经发出。
  注意:
  试图在析构函数中抛出一个异常会导致致命错误。
 

上一篇:PHP实现超简单的SSL加密解密方法

下一篇:使用PHP内置SOAP要点分析