PHP值自動載入類與轉殖

2021-10-11 01:58:07 字數 3757 閱讀 4323

1.1自動載入類

在專案開發中,因為乙個檔案中只能寫乙個類,並且在執行過程中會有很多的類參與,如果乙個乙個的載入很麻煩,所以

就需要乙個機制實現在php執行過程中自動載入需要的類

1.1.1 書寫類的規則

1.乙個檔案中只能放乙個類(必須)

2.檔名和類名同名(必須)

3.類檔案以.class.php結尾(不是必須)

1.1.2 手動載入類

1、建立goods.class.php頁面

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 11:32

*///商品類

abstract class goods

public abstract function getname();

}

2、建立book.class.php頁面

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 11:33

*///圖書類

class book extends goods》

";// todo: implement getname() method.

}}

3、建立phone.class.php頁面

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 11:33

*///**類

class phone extends goods

}

4、在php頁面上載入類檔案

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 11:26

*/require './goods.class.php';

require './book.class.php';

require './phone.class.php';

//測試

$book=new book();

$book->setname("物件導向程式設計");

$phone=new phone();

$phone->setname("蘋果6s");

$book->getname();

$phone->getname();

1.1.3 自動載入類 方法一:__autoload()函式

當缺少類的時候自動呼叫__autoload()函式,並且將缺少的類名作為引數傳遞給__autoload()。

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 11:26

*//**

* 作用:自動載入類

* @param $class_name string 缺少的類名

*/function __autoload($class_name).class.php";

}//測試

$book=new book();

$book->setname("物件導向程式設計");

$phone=new phone();

$phone->setname("蘋果6s");

$book->getname();

$phone->getname();

注意:__autoload()函式在php7.2以後就不支援了。

1.1.4 自動載入類 方法二:spl_autoload_register()

註冊__autoload()函式

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 11:26

*//**

* 方法一

* 載入類函式

* @param $class_name string

*//*function loadclass($class_name).class.php";

}//註冊載入類函式

spl_autoload_register('loadclass');*/

/** * 方法二:

*/spl_autoload_register(function ($class_name).class.php";

});//測試

$book=new book();

$book->setname("物件導向程式設計");

$phone=new phone();

$phone->setname("蘋果6s");

$book->getname();

$phone->getname();

1、spl_autoload_register()可以註冊多個自動載入函式

spl_autoload_register('load1');

spl_autoload_register('load2');

spl_autoload_register('load3');

2、php5.1以後就開始支援此函式

1.1.5 類檔案儲存不規則的載入方法

將類名和檔案位址做乙個對映,組成乙個關聯陣列

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 14:01

*/spl_autoload_register(function ($class_name));

//測試

$book=new book();

$book->setname("物件導向程式設計");

$phone=new phone();

$phone->setname("蘋果6s");

$book->getname();

$phone->getname();

在專案中,絕大部分都是規則儲存的,不規則的比較少。

1.2 clone和__clone()

建立物件的方式有哪些

方法一:例項化

方法二:轉殖

<?php

/** * created by phpstorm.

* user: sankrua

* date: 2020/12/1

* time: 14:15

*/class student

}$stu1=new student();

$stu2=clone $stu1;//轉殖物件

var_dump($stu1,$stu2);//object(student)#1 (0) object(student)#2 (0)

小結:

1、clone是建立物件的方法之一

2、當執行clone指令的時候,會自動的呼叫__clone()方法

php引用類和載入類,轉殖

class ren function clone r new ren 張三 男 轉殖 r1 clone r var dump r var dump r1 引用類,載入類 關於根路徑 php裡面 代表根路徑 指該檔案所在的磁碟比如d html裡面 代表根路徑 指伺服器資料夾 www include i...

php自動載入類

php類的自動載入機制 php的自動載入 在php5以前,我們要用某個類或類的方法,那必須include或者require,之後才能使用,每次用乙個類,都需要寫一條include,麻煩 php作者想簡單點,最好能引用乙個類時,如果當前沒有include進來,系統能自動去找到該類,自動引進 於是 au...

PHP 自動載入類

在專案開發中,因為乙個檔案中只能寫乙個類,並且在執行過程中會有很多的類參與,如果乙個乙個的載入很麻煩,所以,就需要乙個機制實現在php執行過程中自動載入需要的類。1.2.1 類的規則 乙個檔案中只能放乙個類 必須 檔名和類名同名 必須 類檔案以.class.php結尾 不是必須 1.2.2 手動載入...