<ul> <li><span>2.1命名空間:</span></li> <li><span>避免衝突,放在<?php後第一行 </span></span></li> <li><span>引用命名空間:use namespace Symphony/Httg 讓</span></li>引用命名空間中的某一類:use Oreilly/con as a;<li><span></span></li>引用命名空間中的函數:use func Oreilly/functionName;<li><span></span></li>量引用命名空間中的常數:引用空間中的常數CONST_NAME;<li><span></span></li>多重導入:檔案頭多個use語句<li><span></span></li>在一個檔案中使用多個命名空間<li><span></span></li> <php><span></span><ul><li> <span></span><ul>全局命名空間:沒有命名空間的程式碼,例如php原生的Exception類,前面家訪問可以做到告訴php別再當前命名空間中查找,要到全局空間中查找,$ e = new Exception()<li><span></span></li>完全限定的php類別名稱:(命名空間+類名)<li><span></span></li>2.2使用介面</ul> </li></ul>介面定義:interface2.2使用介面<li> <span></span> ;</li><li> <span></span>public function getContent();</li><li> <span></span>}</li><li> <span></span><ul> <li>介面實作<span></span>public function getId() {</li> <li> <span></span>return $this->url;</li> <li><span></span></li> </ul>}</li><li> <span></span>約<ul>狀trait<li><span></span></li> <li>使用性狀的原因,兩個類別需要十分相似的功能結構,如果採用繼承的方式實現,則會破壞原本的類別層次結構,如果使用介面實現,則會導致程式碼重複,因此引入性狀<span></span><ul> <li> <span>定義性狀:trait MyTrait{</span><ul> <ul><li><span>//性狀的實現</span></li></ul> <li><span>}</span></li>性</ul> </li> <li> <span>花</span>use MyTrait;<ul> <ul><li> <span> </span>}</li></ul> <li><span></span></li>2.4產生器generator,迭代器</ul> </li> <li> <span>生成器即一個php函數,並使用yield關鍵字,生成器不傳回值,只產出</span>產生器即一個php函數,並使用yield關鍵字,生成器不傳回值,只產出值,只能向前進的迭代器,適用於迭代大型的資料集。 </li> <li> <span></span>產生器的建立方式:function myGenerator(){</li> <li> <span></span><ul>yield 'value1';<ul> <li> <span></span>yield 'value1';</li> <li><span> </span></li> </ul>生成器的使用:PHP傳回Generator類別的對象,有利於節省內存,例如需要產生一個10000範圍內的整數,一種方式是在內存中創建10000個整數,而採用生成器迭代,每次只需要佔用一個整數的內存即可。 <li><span></span></li>foreach(myGenerator() as $yieldValue){</ul> </li> <li> <span></span>echo $yieldValue;//輸出value1,value2</li>和匿名函數<li> <span></span> <ul>閉包:創建時封裝周圍狀態的函數,即使閉包所在的環境不存在了,閉包中封裝的狀態依然存在<ul><li> <span></span>匿名函數:沒有名稱的函數,可以付值給變數</li></ul> <li> <span>閉包和匿名函數其實是對象,屬於Closure類型的實例</span> </li> </ul> </li>2.6創建閉包<li><span></span></li>只要變數名稱後面有(,php會查找_invoke()方法,沒有閉包之前只能夠php進行具名回呼<li><span></span></li>$numbersPlusOne <li><span>= </span></li>array_map<li><span>(</span></li>function <li><span>($number) { </span></li> <li> <span>return </span><ul>$number <li> <span>+ </span><span>1</span><span>; </span><span></span><span>}, [</span><span>1</span><ul>,<li> <span>2 </span><span>print_r</span><span>($numbersPlusOne); </span><span>// </span><span>輸出 </span> </li>--> <li> <span>[</span><span>2</span><span>,</span><span>3</span><span>,</span><span>4</span><span>] </span>cg :function </li> </ul>enclosePerson</li> <li>(<span></span>$name<span></span>) {<span></span><span></span>return function <span></span>(<span></span>$dousCommand<span> </span><span>use </span><span>(</span><span>$name</span><span>) { //</span><span>封裝了name參數</span> </li> </ul> </li>return <li>%'sprintsprint<span></span><ul> <li>return <span>%'sprintsprint; </span><span>$name</span><span>, </span><span>$doCommand</span><span>); </span><ul> <li> <span></span><span>}; </span>附加閉包的狀態:<span></span><span></span>$ this<span></span>-><span></span>routes<span></span>[<span></span>$routePath<span></span>] <ul><li>= <span></span>$routeCallback<span></span>-><span></span>bindTo<span></span>(<span></span>$this<span></span>,CL%物件類型<span> </span><span></span><span></span> </li></ul>2.7字節碼快取Zend OPcache</li> <li> <span></span>2.8PHP內建伺服器</li> </ul> </li> <li><span>2.8PHP內建伺服器</span></li>可以設定為php -S 0.0.0.0:4000<li> <span></span><ul>伺服器設定:php -S localhost:4000 -c app/config/php.ini<li> <span></span><span>由於內建的伺服器不具有.htaccess框架,使用內建的路由腳本來取代</span><span></span><span>php -S localhost:4000 router.php</span><span> </span> 以上就介紹了PHP學習-chapter2之php的特性,包含了chapter,php學習的內容,希望對PHP教學有興趣的朋友有幫助。 <span> </span> <span></span> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </li></php> </ul>