มาใช้ Zend Framework ใน CI กันเถอะ


หน้าแรก Web Service มาใช้ Zend Framework ใน CI กันเถอะ
เอาล่ะ หายหน้าหายตากันไปนาน ก่อนอื่นก็ขอ “สวัสดีปีใหม่” กันก่อน ปีใหม่นี้เริ่มเข้ามาก็มีแต่เรื่องเศร้าละ หลายคนที่ติดตามข่าว คงจะได้รับรู้เหตุการณ์ที่ ไฟใหม่ “Zantika Pub” ก็เป็นเหตุการณ์ที่ไม่น่าเกิดขึ้นเลยจริงๆ ก็ขอแสดงความเสียใจ กับผู้ที่สูญเสีย ในเหตุการณ์ครั้งนี้ รวมไปถึงครอบครัว ของผู้เสียชีวิตด้วยนะครับ อย่างน้อยเรื่องในครั้งนี้ น่าจะเป็นอุธาหรณ์ ให้กับผู้ประกอบการสถานบันเทิงในบ้านเรา ให้เก็บเอาไปทำการบ้านเพิ่มเติม ในเรื่องของความปลอดภัย มากกว่าที่จะคำนึงถึงแต่ ผลประโยชน์ส่วนตัว หรือ พรรคพวก กันแต่อย่างเดียว ไหนๆ ได้เงินเค้ามาจากธุรกิจ ที่มอมเมา แล้วเสียเงินไปอีกนิดกับความปลอดภัยให้แก่ ผู้บริโภคบ้าง คงไม่ถึงกับหนักหนา อะไรนักนะครับ

อืมม์ นอกเรื่องไปพักนึง ทีนี้กลับเข้ามาสู่เรื่องของเราดีกว่า เรื่องที่จะพูดในวันนี้ จริงๆ แล้วก็ไม่ได้เกี่ยวกับ CI โดยตรงนัก แต่จะเป็นการนำ Framework ชุดอื่นมาผสมผสาน ความสามารถให้แก่ CI เพื่อให้ใช้งานได้ดียิ่งๆ ขึ้น ก็จะมากล่าวถึง Zend Framework กัน ซึ่งตัวนี้เท่าที่ลองหาข้อมูลมา เป็น Framework ที่ต่างประเทศ ให้ความสนใจกันมาก เพราะนอกจากความสามารถจะครบครันแล้ว ยังมี Community ที่แข็งแกร่ง และก็เชื่อถือได้ นั่นก็เพราะว่า ผู้ให้กำเนิดมันเป็น กลุ่ม “Zend” ซึ่งพัฒนา ภาษา PHP โดยตรง

แต่เนื่องจากนี่เป็น บทความของ CI ไม่ใช่ ZF ผมจึงไม่ขอกล่้าวในส่วน การ Implement ZF แต่จะพูดถึงการเอาความสามารถที่มีอยู่ของมัน ไปต่อยอดให้กับ CI ของเรา สำหรับใครที่สนใจจะศึกษา ลองไปดูในส่วน Docs ของเค้าก่อน แนะนำให้ดูจาก Video ก่อนนะครับ ไม่งั้น งง เป็นได่ตาแตก เพราะว่าหลังจาก Download มา เค้าไม่ได้เขียน Core ในส่วน MVC มาให้มีแต่ Libraries ล้วนๆ

ซึ่งข้อดีหลักๆ ของ ZF ก็คือ มี libraries ที่เยอะ และค่อนข้างมีประโยชน์ หลายตัว เช่น ACL (Assess control listl), DOM (Document object model), OpenID, PDF, APIs, Soap และที่สำคัญมี jQuery ด้วยล่ะ Good Job!

การ Plug ZF นั้นแตกต่าง จากการ plug library แบบปกติ เพราะเนื่องจาก ตัวขอ Zend เองก็จะมี การ include core หลักๆ ที่อยู่ใน Folder ของตัวเองลงไป และเพราะสาเหตุนี้แหละ ถ้าเราจะทำการ plug แบบเดิม คงจะต้องก้ path include กัน ไม่ได้หลับได้นอแน่ๆ เราก็เลยต้องมา set include path กันใหม่ โดยมีตัวช่วยคือ Hooks นั่นเองครับ มาดูวิธีกันเลยดีกว่า

ก่อนอื่นไป Download Zend Framework มาก่อน

จากนั้นมาทำตามขั้นตอนกันไปทีละข้อเลยนะึครับ

1. สร้าง Dir ที่ application ของ CI ในตัวอย่างผมจะสร้าง folder ชื่อว่า extlibs ตามนี้
[CI]/application/extlibs/

2. จากนั้นนำ Core ของ Zend ทั้งหมดมาวาง ก็จะได้ออกมาเป็น
[CI]/application/extlibs/Zend/

3. ไปทำการ Config hooks ที่
[CI]/application/config/hooks.php

ตามนี้

<?php  if (!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);
$hook[‘pre_controller’][] = array(
        ‘class’ => ‘ExLibs’,
        ‘function’ => ‘index’,
        ‘filename’ => ‘ExLibs.php’,
        ‘filepath’ => ‘hooks’
);
?>
4. แล้วไปเขียน class ตามที่เราเรียกใช้ ที่
[CI]/application/hooks/ExLibs.php

ตามนี้

<?php
if (!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);
class ExLibs {
 
        function index()
        {
                // ถ้าใช้ unix server ให้เอา comment ที่บรรทัดนี้ออก แล้วไป comment ข้างล่างแทน
                #ini_set(‘include_path’,ini_get(‘include_path’).’:’.dirname(FCPATH).’/application/exlibs/’);
                // ถ้าใช้ windows server ให้ ใช้ตามนี้ได้เลย
                ini_set(‘include_path’,ini_get(‘include_path’).‘;’.dirname(FCPATH).‘/application/exlibs/’);
        }
 
}
?>
เท่านี้ path include ก็จะถูกชี้มาที่ Folder ที่ extlibs แล้ว แต่ไม่ต้องห่วง การ include จะมองแบบเดิมเพี้ยน “ไม่มีผลครับ”

เท่านี้เราก็จะสามารถใช้งาน Zend Framework ได้อย่างปกติสุขแล้ว ลองมาดูสักตัวอย่าง ที่ Controllers ผมไปสร้าง zend มาสักไฟล์เพื่อเทส

zend.php

<?php
class Zend extends Controller {
 
        function __constuct()
        {
                parent::Controller();
        }
 
        function twitter()
        {
                // Doc: http://framework.zend.com/manual/en/zend.service.twitter.html
                require_once(‘Zend/Service/Twitter.php’);
                $twitter = new Zend_Service_Twitter(‘YOUR_ACCOUNT’, ‘YOUR_PASSWORD’);
 
                $response = $twitter->status->userTimeline();
                var_dump($response);
        }
 
}
?>
แล้วลองเรียก
[CI]/application/zend/twitter

เท่านี้ผมก็จะได้ข้อมูล Twitter ใน Account ผมมาเพื่อทำการแสดงแล้ว
Notice: อย่าลืมแก้ไข user, password ให้เป็น account ของคุณเองก่อน

และถ้าอยากลอง libraries อื่นๆ ก็ไปอ่านเอาได้ที่ manual ของ ZF เองเลยครับ เท่านี้ก็เท่ากับคุณ สามารถใช้งาน Libs ของ zend ได้อย่างเต็มที่ แล้ว ทำได้แบบนี้จะต้องการอะไรอีกล่ะ จริงมั้ย?

refer: http://www.jquerytips.com/2009/01/01/codeigniter-using-zend-framework/


ขึ้นไปด้านบน