首頁 後端開發 php教程 現在學PHP需要注意的那些事

現在學PHP需要注意的那些事

Jul 25, 2016 am 08:45 AM

你應該看過 php The Right Way ,這篇文章包含了很多內容,而且還能再擴展開。大部分的名詞和概念你都需要了解。

  1.PSR

groupn.

  在之前的文章中以及跟同事交流的過程中我多次提到過PSR(PHPPH Standard Recommendation)。很多人以為 PSR 只是做一些規範程式碼風格等無關痛癢的事情,但其實遠不止此。

  PSR 的一系列標準文件由php-fig (PHP Framework Interop Group)起草和投票決議,投票成員中有一些主流框架和擴展的作者,包括Laravel、Symfony、 Yii等等。

  依照其官網的說法,這個組織的目的並不是告訴你你應該怎麼做,只是一些主流的框架之間相互協商和約定。但是我相信這些框架和擴充總會有你用到的。

  PSR 目前通過的共有6 份文件:

  0:自動載入(主要是針對PHP 5.3 之前沒有命名空間的版本

  1:編碼規範

  2:編碼風格推薦

  2:編碼風格建議

  4:自動載入更細(在出現命名空間後有很大的改變)

  7:HTTP 介面

  7:HTTP 介面

  目前在起草(Draft)中的還有PSR-5(PHPDoc Standard)、PSR-6(Cache)等。 5 和 6 沒有出現在以上的清單中,是因為還沒有投票通過。

  我相信隨著標準的不斷更新,你會發現研究這些約定對你也是很有裨益的,雖然未必什麼都要遵守。   Nobody in the group wants to tell you, as a programmer, how to build your

app

lication.

2.Composer

  Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage for them. 🎜>

  composer 和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

  The PHP Coding Standards Fixer tool fix>  The PHP Coding Standards Fixer tool fixix>

  The PHP Coding Standards Fixer tool fixixo>

  The PHP Coding Standards Fixer tool fixixes most issue in wixs coding standards as defined in the PSR-1 and PSR-2 documents.

  這個工具的作用是按照PSR-1 和PSR-2 的規範格式化你的程式碼,還有一些可選的編碼風格是Symfony 的規範。

  這個其實本來並沒有那麼值得一說,只是最近在幾個開源框架中都看到了 .php_cs 的文件,一時好奇,深究下去才發現了這個專案。

  專案位址: https://github.com/FriendsOfPHP/PHP-CS-Fixer

 〔在其特定的使用和配置方法方法項目主頁上都有介紹。這個組織的名字也很有趣: FriendsOfPHP 。主要的成員大概是來自 Symfony 專案中。

  可能有人覺得糾結程式碼風格的問題其實沒有特別大的必要。要說好處我也說不上來,如果你覺得程式設計不只是一份工作,那這就跟你收拾房間一樣,邋遢的房間不影響你吃飯睡覺,但乾淨的看起來更舒服。如果要和別人合作,那這件事情就更重要了。

  4.PsySH  A runtime devel操作🎜>

  PsySH 類似Python 的IDLE 的一個PHP 的互動運作環境。這是我在 Laravel 中發現的,Laravel 5 的 artisan tinker 的功能是透過它來實現的。 Laravel 4 中用的是另一個項目: boris 。

  這個主要是在平時測試一些 php 的簡單的函數和特性的時候可以方便使用。遇到一些不確定的事情、像是 empty 的使用等,可以用它來做測試。

  5.一些框架和組件

  框架

  框架

我喜歡的〜」是比較目前公司在用的是Yii2,我關注的有Symfony 以及Phalcon (C語言實作)。用什麼不用什麼,主要是喜好,有時候也由不得自己選擇,但研究一下,多一分了解也未嘗不可。

  提到 Laravel 很多人會立刻想到 Ruby on Rails。我想模仿或抄襲這都不是主要的目的,主要的目的是提供給開發者一個更好的工具。 Laravel 還好它有一個不一樣的路由控制(不帶Action 後綴或前綴的),有一個好用的ORM (Eloquent),好用的模板引擎(Blade) 亦或有一個顏值比較高的文檔(社區看到的話)等等。

  強大有時候也會被人詬病龐大,但這在於你需要了解自己項目的中長期規劃,項目現在的大小以及未來的大小及承載。

  Larval 的核心實作是一個容器(Container)以及 PHP 的反射類別( ReflectionClass )(Yii 2 也是一樣)。要理解這些,多看文章和文件的同時,也可以看看原始碼。

  Symfony 2 提供了許多組件。 http-kernel 和 http-foundation 在 Laravel 也有繼承過來直接使用。它是值得了解和學習的。

  CodeIgniter 是一個小巧而強大的框架。雖然 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 也有自己的一套實現方式。

  模板引擎

  模板引擎需要做三件事:  模板引擎需要做三件事:

  模板引擎需要做三件事:

  2、條件判斷與循環(if ... else、for、foreach、while)

 33 、引入或繼承自其他文件

  Laravel 實現的Blade 是比較輕量好用的模板引擎。不過目前並不是很好能夠引入其他框架。十一的時候閒來無事試圖將其引入到 Yii 2 中,現在還只是簡單的實現,我希望後面能將 Blade 的解析部分單獨抽取出來做一個輕量級的實現。在 Github 上搜尋發現也有人在做同樣的事情。

  Yii 2 似乎更建議就用原生的 PHP 去寫,不過也提供了支援 Smarty 和 Twig 的擴充。 Symfony 2 則採用了 Twig。 Twig 和 Symfony 以及上文提到的 php-cd-fixer 都是 SensioLabs 的作品。

  Smarty 是一個古老而頑強的模板引擎。說實話我並不是太喜歡,其文法過於複雜,變數賦值這些事情都有自己的一套做法。現在的版本更是使用 Lexer 的方式來解析文件,感覺像是用 PHP 實作了另一種語言。專案裡面還有一些太長的正規表示式、太複雜的實現,我覺得這是一件很危險很容易出錯的事情。更多相關PHP資料http://www.kokojia.com/list/219.html



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話如何劫持工作,如何在PHP中減輕它? 會話如何劫持工作,如何在PHP中減輕它? Apr 06, 2025 am 12:02 AM

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試? 在PHPStorm中如何進行CLI模式的調試? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

PHP 8.1中的枚舉(枚舉)是什麼? PHP 8.1中的枚舉(枚舉)是什麼? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

See all articles