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 手動載入...