CodeIgniter 尋找新東家

CodeIgniter

很高興看到 CodeIgniter 出了 2.1.4 版本了,距離上個版本大約 9 個月,但是這次的 Release 只針對 Security 做改善,可以參考 Change Log。然而在今天看到 Ellislab 宣佈找尋 CodeIgniter 新東家,也就是官網不再維護此 Project,希望有新的團隊或公司可以接手,繼續讓 CodeIgniter 發揚光大,在 GitHub 上的 PHP Language 排名上,CodeIgniter 幾乎榜上有名,討論活躍度也是非常高的,但是公司就是找不到任何 Business Model 來支撐整個 Project 維護成本。其實觀察幾年下來,本來寫 CodeIgniter 核心人物都漸漸不在了,像是 @Philsturgeon 自己創了 Fuel PHP Framework,現在似乎也沒在參與此 Project?CodeIgniter 最後都是由 @narfbg 來 maintain 以及開發新功能,世界各地的 Pull Request 也都是由他負責審核並且參與討論,但是一個人還是無法負擔這麼多事情阿,所以現在 CodeIgniter 3.0 還是生不出來。最後希望還是有人可以接手 CodeIgniter,很期待 3.0 出來的說,都已經做了一半以上了,不要放棄阿。

CodeIgniter Error Handler 處理

CodeIgniter

CodeIgniter 在處理 PHP Error handler 是直接呼叫內建的 Exceptions Class 顯示在瀏覽器上,如果有打開 log,系統另外會紀錄在 application/logs 目錄。這是 CodeIgniter 預設作法,但是我希望能把這些錯誤訊息都紀錄到 Database,相關 Notice, Error 訊息都一律寫到 DB 裡面,但是如果用 extend 系統內的 Exceptions 是完全做不到的,所以我寫了一個 Library 只要直接 include 系統就可以直接開始紀錄,因為在 PHP 你會遇到無數種 User experience,都會產生相關錯誤訊息,在產品上線都會將 display_errors 設定為 0,不要讓使用者看到任何錯誤訊息,但是我們還是需要全部的錯誤訊息阿,底下來看看如何安裝 Log Library。

建立 log table 可以直接參考

連結,或者是複製底下資料貼到 phpMyAdmin。

--
-- Table structure for table `logs`
--

DROP TABLE IF EXISTS `logs`;
CREATE TABLE IF NOT EXISTS `logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `errno` int(2) NOT NULL,
  `errtype` varchar(32) CHARACTER SET utf8 NOT NULL,
  `errstr` text CHARACTER SET utf8 NOT NULL,
  `errfile` varchar(255) CHARACTER SET utf8 NOT NULL,
  `errline` int(4) NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
[Read More]

CodeIgniter 台灣官網原始碼釋出

CodeIgniter
2009 年開始接觸

CodeIgniter,拿到第1版原始碼來自 中國 CodeIgniter ,版本是很舊的 1.7.x 版本,目前官方已經是 2.1.3 版本,現在朝 3.0.x 版本邁進,這次有機會將整個原始碼改寫成 3.0.x develop 分支版本,也將整個官方 source code 分享出來,讓需要原始碼範例初學者可以參考,Source Code 已經放在 github 上面,由於是拿大陸那邊的原始碼,也許有些地方寫的不是很完整,歡迎大家 pull request。 台灣 CodeIgniter Source Code Github

Nginx 判斷檔案是否存在

如果你有在使用 CodeIgniter + Nginx + PHP-FPM 使用者,務必看到這篇 CLI problem nginx php-fpm,在使用 CLI 時候會有些問題,解決方式也非常簡單,只要在 index.php 裡面加上

$_SERVER['PATH_INFO'] = NULL;
當然這篇最主要不是講這個,而是最後我有提到一篇解法,在

Nginx 裡面如何設定 rewrite 功能,比較不同的是,現在不用在設定這麼複雜了,要判斷檔案是否存在,不要在使用下面方式

server {
  root /var/www/domain.com;
  location / {
    if (!-f $request_filename) {
      break;
    }
  }
}
而必須改成
location / {
    try_files $uri $uri/ /index.php;
}
請看

Check IF File Exists,看完之後可以拿掉很多設定,讓 Nginx 設定檔看起來更簡單容易。 參考: try_files

2012 PHPConf RESTful API Design & Implementation with CodeIgniter PHP Framework

phpconf

去年 PHPConf 介紹了 CodeIgniter PHP Framework,這次講如何在 CodeIgniter 底下設計 RESTFul API,其實主要介紹兩個 CodeIgniter 套件,第一個是 RESTFul Server 前面是 RESTFul Client,一個伺服器端,後面用來測試 (Unit Test),底下是今年的 Slide,歡迎大家下載

PHP MVC Framework 搭配 Nginx + PHP-FPM 設定檔

Laravel PHP Framework
相信大家都知道

Nginx 搭配 PHP-FPM 用起來效能還不錯,這次來筆記如何設定 Nginx 去除 PHP MVC Framework 討厭的 index.php 字串,不管是 LaravelCodeIgniter 教學文件都是在 Apache 設定 .htaccess 來達成 Cleaner URL,Apache 最大好處支援 .htaccess,但是 Nginx 也有強大的效能,此篇紀錄如何設定 Nginx 達成 mod_rewrite 效果。

[Read More]

CodeIgniter 3.0.x 支援 Native Session Driver

CodeIgniter
看來

CodeIgniter 團隊看到大家的心聲了,在 2.0.x 版本的時候就已經有人開始發 patch 讓 CI 可以支援 Native Session,也就是透過 session_start 來存取 session,而不是本來的 cookie session,很高興 philsturgeon (Fuel Framework 作者) 今天將此功能 merge 進來 3.0.x 分支,另外 Session 也同時抽出來變成 Driver 而不是單一個 Library 了,詳細可以看此 Patch 連結,也因為這樣所以之前自己寫的 CodeIgniter-Native-Session 可以功成身退了。目前官方同時維護兩個分支,2.1.x 另外是 3.0.x,後者是專門開發新功能,有機會在慢慢介紹。

快速修正專案 PHP Coding Standards

底下是之前的投影片教導創業團隊制定 PHP 程式碼規範,讓工程師可以遵循此規則達到團隊合作

投影片內容都是現有 PHP FIG Group 所制定的 PSR-0, PSR-1, PSR-2 規則,那如何將既有專案的 Coding Style 轉換成上述標準呢,可以透過 PHP Coding Standards Fixer tool 來快速完成,此工具是由 Symfony Framework 完成。透過此工具可以快速且無痛轉換程式碼風格,舉個簡單例子:

[Read More]

CodeIgniter TextMagic API Library Release (簡訊功能)

CodeIgniter
之前寫了

Nexmo 簡訊 API Library for CodeIgniter Framework,現在又發現國外新的一家簡訊系統,叫做 TextMagic,看了一下簡訊價格,27 美金可以傳送 285 通簡訊,似乎比 Nexmo 還貴了一些,不過沒關係,TextMagic 還支援了後台系統或者是 Email 來傳送簡訊,這點倒是不錯,相較於 Nexmo,TextMagic 後台多了太多功能了,不多說了,直接來使用 CodeIgniter TextMagic Libray。

[Read More]

如何善用 CodeIgniter Library 及擴充核心 extend core class

CodeIgniter
上禮拜介紹了

CodeIgniter MVC 基礎介紹,這次來分享如何善用 CodeIgniter 內建的 Library,以及該如何擴充核心功能,投影片內容會比上禮拜深入些,不過不會很難,只要對於物件導向有一定的基礎,我相信都可以把整個 CodeIgniter 架構瞭解的很清楚。

此投影片會介紹4個部份
  • 如何善用使用 CodeIgniter 內建函式庫
  • 移植及撰寫個人 Library
  • 擴充核心程式碼
  • GetSparks 簡介