互聯網時代,軟件更新迭代很是之快,做爲php開發人員,咱們也須要與時俱進,若是有條件的話,儘量的使用最新版的軟件進行開發。好比,你如今就應該用php 5.3以上版本。php
廢話很少說,今天和你們分享的就是,php開發人員必須瞭解的一些知識,若是你已經掌握了,那麼恭喜你,你很優秀,若是你還沒掌握或瞭解,那但願本文的分享對你知識的豐富有幫助。node
1. PSRpython
PSR是PHP Standard Recommendation的簡寫,不少人覺得 PSR 只是作一些規範代碼風格等無關痛癢的事情,但其實遠不止此。正則表達式
PSR的標準文檔都是由php-fig (PHP Framework Interop Group)起草和投*決議的,而投*成員中不乏一些主流框架和擴展的做者包括 Laravel、Symfony、Yii等等。而官方說法,這個組織的目的並非告訴你你應該怎麼作,只是一些主流的框架之間相互協商和約定。相信這些框架和擴展中總會有你用到的。npm
PSR 目前經過的共有 6 份文檔:composer
0:自動加載(主要是針對 PHP 5.3 之前沒有命名空間的版本)框架
1:編碼規範函數
2:編碼風格推薦工具
3:Log 結果測試
4:自動加載更細(在出現命名空間後有很大的改變)
7:HTTP 消息接口
據悉,目前在起草(Draft)中的還有 PSR-5(PHPDoc Standard)、PSR-6(Cache)等。5 和 6 沒有出如今以上的列表中,是由於尚未投*經過。
雖然看似和咱們平時的php代碼編寫關係不大,不是全部的標準都須要遵照,可是隨着標準的不斷更新,這些約定對你確定是頗有裨益的。
2. Composer
Composer 是php中的一種管理工具, 和 Pear、Pecl 都不一樣,它不只僅是用於安裝擴展,更重要的是定義了一種現代PHP 框架的實現和擴展管理的方法。相似 node.js 的 npm、Python 的 pip ,但又比以上作的更多。
Composer 的核心是實現擴展的標準安裝和類的自動加載。經過 packagist.org 這個平臺,無數的擴展組件能夠被很方便的引入,目前比較知名的 PHP 擴展均可以經過 composer 安裝了。而調用僅僅只須要加載一個 autoload.php 的文件便可。
composer 是經過 spl_autoload_register 方法註冊一個自動加載方法實現擴展類和文件的加載的,固然這中間 composer 也作了一個優化。
衆所周知, PHP 引入文件要經過 include 和 require 實現,這其實寫起來並很差看。 PHP 5.3 提供了命名空間,這原本和文件引入也不相干。可是 composer 實現了 PSR-4(在老版本的 PHP 上是 PSR-0),使用 use 時經過調用 spl_autoload_register 實現的方法在調用時加載所須要的類,在寫法上相似 Python 的 import,即美觀也起到了按需加載、延遲加載的做用。
3. php-cs-fixer
php-cs-fixer主要是用於按照 PSR-1 和 PSR-2 的規範格式化代碼,還有一些可選的編碼風格是 Symfony 的規範,由於其成員大部分都是來自 Symfony 項目。其具體的使用和配置方法在官方文檔上面都有介紹,這裏就不在贅述。
或許有人會以爲代碼實現功能最重要,風格並非那麼重要。其實若是想成爲一名優秀的php開發工程師,相信能實現既定功能確定是遠遠不夠的,還要能編寫出高質量的代碼,何謂高質量的代碼,相信這個不用多說,你也清楚。
4. PsySH
PsySH是php中的一個相似於Python 的 IDLE的交互運行環境。這個在Laravel中常見,Laravel 5 的 artisan tinker 的功能就是經過它來實現的。PsySH還經常用於測試一些php 的簡單的函數和特性。
5. 一些框架和組件
Laravel
Laravel是如今比較火的一個php開發框架,提到 Laravel 不少人都會立馬想到 Ruby on Rails。其實模仿或者抄襲這都不是主要的目的,主要的目的是提供給開發者一個更好的工具。Laravel 好在它有一個不同的路由控制(不帶 Action 後綴或前綴的),有一個好用的 ORM (Eloquent),好用的模板引擎 (Blade) 亦或有一個顏值比較高的文檔等等。Larval 的核心實現是一個容器(Container)以及 PHP 的反射類(ReflectionClass)(Yii 2 也是同樣)。
Symfony 2
Symfony 2 是php中提供了不少組件的框架。http-kernel 和 http-foundation 在 Laravel 中也有被繼承過來直接使用。
CodeIgniter
CodeIgniter 是一個小巧而強大的PHP開發框架。雖然 CI 並無使用 Composer 組件的方式進行開發,但 3.0 之後的版本也加入了 Composer 的支持(這無非就是多一個 vendor 的目錄,引入 autoload.php)的文件。
ORM
ORM 亦或 Active Record 我以爲仍是須要的。也許有人認爲 PHP 就是一個模板引擎、就應該手寫 SQL 。請不要被這些話所困擾。
CodeIgniter 中 Active Record 的實現方式很輕巧,但對於 CI 自己的體量來講,已是很好用的了。
Laravel 實現的 Eloquent,也能夠集成到別的項目中去。Symfony 2 使用的是 Doctrine ,這個項目也值得關注。Yii 2也有本身的一套實現方式。
模板引擎
模板引擎主要是用於作這三件事情:
變量值的輸出(echo),
條件判斷和循環(if ... else、for、foreach、while)
引入或繼承自其餘文件
Laravel 實現的 Blade 是一個比較輕量好用的模板引擎。不過目前並非很好可以引入到其餘框架中。
Yii 2 彷佛更推薦就用原生的 PHP 去寫,不過也提供了支持 Smarty 和 Twig 的擴展。Symfony 2 則採用了 Twig。Twig 和 Symfony 以及上文提到的 php-cs-fixer 都是 SensioLabs 的做品。
Smarty 是一個古老而頑強的模板引擎,其語法相對複雜,變量賦值這些事情都有本身的一套作法。如今的版本中更是使用 Lexer 的方式來解析文件,感受像是用 PHP 實現了另一種語言。項目裏面還有一些太長的正則表達式、太複雜的實現,使用很差,一件很容易出錯的事情。