PHP 类与对象 全解析方法

1.类与对象php

对象:实际存在该类事物中每一个实物的个体。$a =new User(); 实例化后的$a函数

引用�php的别名,两个不一样的变量名字指向相同的内容ui

封装: 把对象的属性和方法组织在一个类(逻辑单元)里编码

继承:以原有的类为基础,建立一个新类,从而代码复用的目的;指针

多态:容许将子类类型的指针赋值给父类类型的指针。对象

-------------------------------------继承

2.自动加载对象:ci

自动加载经过定义特殊的__autoload函数,当引用没有在脚本中定义的类时会自动调用这个函数.资源

1 [php] view plaincopyprint?开发

2 function __autoload($class){

3 require_once("classes/$class.class.php");

4 }

为何要使用__autoload

1,首先是不知道这个类文件存放在什么地方,

2,另一个就是不知道何时须要用到这个文件。

3,特别是项目文件特别多时,不可能每一个文件都在开始的部分写很长一串的 require …

替代了一

require_once ("classes/Books.class.php") ;

require_once ("classes/Employees.class.php" ) ;

require_once ("classes/Events.class.php") ;

require_once ("classes/Patrons.class.php") ;

zend推荐了一种最流行的办法,在文件名中包含路径。例以下面的例子:

1 [php] view plaincopyprint?

2

3 view sourceprint?

4 // Main.class

5 function __autoload($class_name) {

6 $path = str_replace('_', DIRECTORY_SEPARATOR, $class_name);

7 require_once $path.'.php';

8 }

temp = new Main_Super_Class();

全部的下划线都会被替换成路径中的分隔符,上例中就会去 Main/Super/Class.php文件。

缺点:

是在编码过程当中,必须明确的知道代码文件应当所处的位置,

并且因为将文件路径硬编码在了类名中,若是须要修改文件夹的结构时,咱们必须手工修改全部的类名。

若是是在一个开发环境中,而且对于速度不是很在乎的话,使用'Include All’这个方法是很是方便的。

经过将全部类文件放在一个或几个特定文件夹中,而后经过遍历的方式查找加载。

例如

<?php

$arr = array (

'Project/Classes',

'Project/Classes/Children',

'Project/Interfaces'

);

foreach($arr as $dir) {

$dir_list = opendir($dir);

while ($file = readdir($dir_list)) {

$path = $dir.DIRECTORY_SEPARATOR.$file;

if(in_array($file, array('.', '..')) || is_dir($path))

continue;

if (strpos($file, ".class.php"))

require_once $path;

}

}

?>

另一个方法是在类文件和他的位置之间创建关联的配置文件,例如:

view sourceprint?

// configuration.php

array_of_associations = array(

'MainSuperClass' = 'C:/Main/Super/Class.php',

'MainPoorClass' = 'C:/blablabla/gy.php'

);

调用的文件

<?php

require 'autoload_generated.php';

function __autoload($className) {

global $autoload_list;

require_once $autoload_list[$className];

}

$x = new A();

?>

3.构造函数和析构函数

PHP 构造方法 __construct() 容许在实例化一个类以前先执行构造方法。

构造方法是类中的一个特殊方法。当使用 new 操做符建立一个类的实例时,构造方法将会自动调用,其名称必须是 __construct() 。

(在一个类中只能声明一个构造方法,而是只有在每次建立对象的时候都会去调用一次构造方法,不能主动的调用这个方法,

因此一般用它执行一些有用的初始化任务。该方法无返回值。)

做用: 用来建立对象时初始化对象

子类执行分类的构造函数parent::__construct().

析构函数: __destruct ()定义:特殊的内成员函数,没有返回类型,没有参数,不能随意调用,也没有重载;

只是在类对象生命结束的时候,由系统自动调用释放在构造函数中分配的资源。

与构造方法对应的就是析构方法,析构方法容许在销毁一个类以前执行的一些操做或完成一些功能,好比说关闭文件、释放结果集等。

析构函数不能带有任何参数,其名称必须是 __destruct() 。

相关文章
相关标签/搜索