PHP

[PHP] Autoloading Standard - PSR-0 VS PSR-4

PSR-0

  1. 完整的命名空間 fully-qualified namespace 與 類別 class 必須符合以下結構:
    \<vendor name>\(<namespace\>)*<class name>
  2. 每個命名空間 namespace 必須包含一個 頂級 top-level 的 namespace (vendor name)
  3. 每個命名空間 namecspace 可以擁有任意數量的 子命名空間 sub-namcespaces
  4. 載入檔案時,每個命名空間的分隔符號 separator 必須轉化成 目錄分隔符號
  5. 每個在類別名稱中的下畫線符號 "_" 都要轉化為 目錄分隔符號。該符號在命名空間裡沒有任何特別的用處。

[PHP] trait | interface | abstract 比較

interface abstract trait
  1. 規範子類/子介面一定要具備某些東西,包含變數與function
  2. 可以被多重 繼承(extends),子介面會擁有父母們的所有規範。但父母們之間的function不能重名。
  3. interface裡只能有public function,且都是空的。
  4. 可以有 constant ,但不能被override
  5. implement 的時候,必須 override所有的fucntion

[PHP] 如何利用手動安裝版本的PHP使用 pear 及 pecl

偶爾就會用到,寫一下筆記

[pear]

pear比較簡單,直接用該版本php目錄中的執行檔即可,假設是目錄是/opt/php7,一般來說執行檔都放在在/opt/php7/bin,所以可以這樣
指令範例如下:

  1. 看pear的設定檔資料
    /opt/php7/bin/pear config-show
  2. 安裝某個module
    /opt/php7/bin/pear install xxx/xxx

[pecl]

pecl 則得要指定設定檔(pear.conf),但並沒有限制一定要使用該版本中的執行檔,指令範例如下:

  1. 安裝模組
    pecl -C /opt/php7/etc/pear.conf install memcache