30/09/2018, 21:08

Thắc mắc về framework php và viết module cho mã nguồn mở php?

Hi all.em hiện tại đã nắm được phần nào kiến thức làm web giờ em muốn sang học framework nhưng có 1 chỗ thắc mắc như sau
Vd em muốn viết module cho 1 mã nguồn mạng xã hội như social engine,php fox.đọc documents thì thấy nó bảo hệ thống được viết bằng zend framework vậy thì có bắt buộc phải viết module hay code thêm vài chức năng bằng zend framework không ? Có thể dùng nhiều framework khác nhau trong 1 dự án không ? Có thể dùng php thuần để viết module cho 1 CMS sử dụng framework ?
2) Ngoài documents từ nhà phát hành cms thì mọi người có kinh nghiệm gì để hiểu rõ hơn về cấu trúc của 1 cms ví dụ như vbulletin, xenforo ? Ý mình là khi viết module cần phải nắm rõ những phần nào của mã nguồn đó, làm thế nào cho hiệu quả ?
Thanks

Muti Videos viết 23:23 ngày 30/09/2018

Uptop nào m.n ghé qua giúp với

Muti Videos viết 23:22 ngày 30/09/2018

alo alo có ai không

Phan Hoàng viết 23:19 ngày 30/09/2018
  1. Framework cũng được built lên từ PHP thuần -> bạn hoàn toàn có thể dùng nhiều framework cho 1 dự án. Ví dụ, bạn đang dùng Zend_Framework nhưng không muốn sử dụng Zend_DB, bạn có thể lựa chọn ADOPHP, Eloquent của Laravel. Và tất nhiên, hoàn toàn có thể viết bằng PHP thuần.

Ưu điểm khi viết thuần:

  • Hoàn toàn độc lập với framework nên có thể inject vào bất cứ app, framework nào. Mình ví dụ thế này, khách hàng yêu cầu bạn viết một tính năng, customize tay cầm XBOX (kiểu giống điện thoại Tango ấy, dán chỗ này, thay cái kia, …), nếu bạn viết thuần (và wrapper lại thành 1 component), bạn có thể dùng nó cho Magento, CSCart, OpenCart, TomatoCart … mà không lo không bị tương thích. Chỉ cần wrapper vào đường dẫn là xong ^^
  • Một số app/fw quá khó để viết theo chuẩn (ví dụ TigerCRM, …) vì nó quy định quá nhiều file -> perf kém. Bạn viết thuần, implement dễ hơn, logic đơn giản hơn và match 100% với yêu cầu. Chứ dùng fw được code theo Generic nên code sẽ dài hơn, nhiều if else và dẫn tới perf giảm. Mình trước kia thường hay tự viết lấy Application, chứ ít dùng Zend_Application vì thấy nó phức tạp và lằng nhằng.

Nhược điểm:

  • Trông hơi lổn nhổn. Ví dụ ZendFW bạn viết $this->getRequest()->getParam(‘user’), giờ dùng thuần bạn viết $_REQUEST[‘user’], tất nhiên nó vẫn chạy vì cái hàm kia nó cũng là vậy. Thế nên, cũng nên có coding convention khi coding với fw, tránh việc dùng # nhau nhiều nơi.

Code phần getParam của ZendFW

    public function __get($key)
    {
        switch (true) {
            case isset($this->_params[$key]):
                return $this->_params[$key];
            case isset($_GET[$key]):
                return $_GET[$key];
            case isset($_POST[$key]):
                return $_POST[$key];
            case isset($_COOKIE[$key]):
                return $_COOKIE[$key];
            case ($key == 'REQUEST_URI'):
                return $this->getRequestUri();
            case ($key == 'PATH_INFO'):
                return $this->getPathInfo();
            case isset($_SERVER[$key]):
                return $_SERVER[$key];
            case isset($_ENV[$key]):
                return $_ENV[$key];
            default:
                return null;
        }
    }
Phan Hoàng viết 23:22 ngày 30/09/2018
  1. Việc tìm hiểu mã nguồn thì chắc chắn tài liệu là ngon nhất rồi. Tuy nhiên, bạn có thể chọc thẳng vô code của FW (nếu được opensource), đặt debugger để xem luồng lạch chạy thế này. Ngoài ra, có thể tiếp cận theo 1 số hướng sau:
  • Tìm document về kiến trúc, ý tưởng của FW, từ đó mình sẽ nắm được tổng quan trước.
  • Có thể cài các version đầu tiên, lúc này logic chưa có gì nhiều nên cũng dễ hiểu hơn.
  • Đặt mình vào vị trí người viết, khi đó solution là gì? # gì với solution của FW không?
Muti Videos viết 23:19 ngày 30/09/2018

Cám ơn anh đã giải đáp

Bài liên quan
0