- 2.1命名空間:
- 避免衝突,放在
- 引用命名空間:use namespace Symphony/HttpFoundation;
- 聲明命名空間:namespace Oreilly;
- 引用命名空間中的某一類:use Oreilly/con as a;
- 引用命名空間中的函數:use func Oreilly/functionName;
- 引用命名空間中的常量:user constant Rreilly/CONST_NAME;
- 多重匯入:檔案頭多個use語句
- 在一個檔案中使用多個命名空間
-
- namespace Foo{}
- namespace Bar{}
- 全域命名空間:沒有命名空間的代碼,例如php原生的Exception類,前面家\訪問可以做到告訴php別再當前命名空間中尋找,要到全域空間中尋找,$e = new \Exception()
- 完整php類名:(命名空間+類名)
- 2.2使用介面
- 介面定義:interface Documentable{
- public function getId();
- public function getContent();
- }
- 介面實現:class HtmlDocument implements Documentable{
- public function _construct(){}
- public function getId(){
- }
- public function getContent(){}
- }
- 2.3性狀trait
使用性狀的原因,兩個類需要十分相似的功能結構,如果採用繼承的方式實現,則會破壞原本的類階層,如果使用介面實現,則會導致代碼重複,因此引入性狀
- 定義性狀:trait MyTrait{
- 性狀的使用:class MyClass{
- 2.4產生器generator,迭代器
- 產生器即一個php函數,並使用yield關鍵字,產生器不返回值,只產出值,只能向前進的迭代器,適用於迭代大型的資料集。
- 產生器的建立方式:function myGenerator(){
- yield ‘value1’;
- yield ‘value2’;
- }
- 產生器的使用:PHP返回Generator類的對象,有利於節省記憶體,例如需要產生一個10000範圍內的整數,一種方式是在記憶體中建立10000個整數,而採用產生器迭代,每次只需要佔用一個整數的記憶體即可。
- foreach(myGenerator() as $yieldValue){
- echo $yieldValue;//輸出value1,value2
- }
- 2.5閉包和匿名函數
- 閉包:建立時封裝周圍狀態的函數,即使閉包所在的環境不存在了,閉包中封裝的狀態依然存在
- 匿名函數:沒有名稱的函數,可以付值給變數
- 閉包和匿名函數其實是對象,屬於Closure類型的執行個體
- 2.6建立閉包
- 只要變數名後面有(,php會尋找_invoke()方法,沒有閉包之前php只能夠進行具名回調
- $numbersPlusOne = array_map(function($number) {
- return $number+ 1;
- }, [1,2,3]);
- print_r($numbersPlusOne);// 輸出 -->[2,3,4]
- 閉包的附加狀態:bindTo()活著use關鍵字
- 使用use關鍵字:functionenclosePerson($name) {
- return function ($doCommand)use ($name) { //封裝了name參數
- return sprintf('%s, %s',$name, $doCommand);
- };
- }
- 使用 bindTo() 方法附加閉包的狀態 :
- $this->routes[$routePath]= $routeCallback->bindTo($this,__CLASS__);
- 第二個參數是將此閉包綁定的物件類型
- 2.7位元組程式碼快取Zend OPcache
- 2.8PHP內建伺服器
php -S localhost:4000
如果需要在別的機器上訪問此伺服器,可以設定為php -S 0.0.0.0:4000
伺服器配置:php -S localhost:4000 -c app/config/php.ini
由於內建的伺服器不具有.htaccess檔案,因此不支援很多PHP架構,使用內建的路由指令碼來替代
php -S localhost:4000 router.php
以上就介紹了PHP學習-chapter2之php的特性,包括了chapter,php學習方面的內容,希望對PHP教程有興趣的朋友有所協助。