2010-09-19 29 views
5

Dường như đã có previous attempts để tích hợp Zend với Symfony trong cùng một dự án. Tôi nghe nó có thể được thực hiện và đã được thực hiện, nhưng ngoài một trình chiếu được liên kết dưới đây, video thực tế đi kèm với trình chiếu không phải là tự do có sẵn.Zend with Symfony

Vì vậy, có ai biết tài nguyên tốt giải thích sự tích hợp tốt như vậy không? blog, video, mọi thứ. Tôi sẽ thêm bất cứ điều gì bạn đăng ở đây để truy cập dễ dàng hơn cho những người khác trong tương lai.

Tài nguyên Tôi đã tìm thấy cho đến nay:

Edit: Tôi nên thêm nếu bạn đã thực hiện này mình trước đây, có thể bạn cũng xin bài bất cứ lời khuyên (ít hoặc nhiều) đến giúp những người có thể muốn thử.

+0

tôi chắc chắn rằng bạn có lý do của bạn, nhưng tại sao bạn muốn/cần phải làm điều này? –

+0

@Pekka Tôi muốn sử dụng các thành phần từ mỗi.Từ những gì tôi biết về Zend (đã làm việc với nó trong 2 tuần qua), có thể sử dụng các thành phần Zend trong bất kỳ dự án nào kể cả PHP thuần túy. Nhưng Zend không hoàn hảo cho nhu cầu của tôi và tôi cần thêm nhiều thành phần mà tôi đã tìm thấy trong Symfony (bắt đầu học Symfony ngay bây giờ). Bài trình bày này tôi tìm thấy cho thấy có thể kết hợp 2, nhưng chi tiết hơn về cách thực hiện là những gì thực sự cần thiết. – jblue

+0

@jblue Tôi thấy. Zend rất mô-đun, vì vậy không có vấn đề gì khi sử dụng các phần của Zend trong một dự án Symfony. Những rắc rối duy nhất bạn có thể gặp phải là với Autoloading, nhưng điều đó cũng có thể được tắt hoàn toàn trên Zend. Có thể bạn sẽ không thể sử dụng bất kỳ chức năng MVC nào của Zend cùng với Symfony: Tôi hy vọng đó sẽ là một doanh nghiệp bị tiêu diệt. –

Trả lời

8

Hoàn toàn đơn giản để thêm khung công tác Zend chạy trong Symfony. Có một số thành phần nhất định của khung công tác Zend mà khen khung công tác của Symfony. Tôi hiện đang sử dụng Zend cho Tìm kiếm Lucene, cũng như Mailer của họ.

Để sử dụng Zend trong Symfony, bạn chỉ cần làm hai việc:

  1. Sao chép khuôn khổ Zend to/your lib/vendor/thư mục.

  2. Sửa đổi tệp ProjectConfiguration. (Config/ProjectConfiguration.class.php)

    class ProjectConfiguration extends sfProjectConfiguration 
        { 
        static protected $zendLoaded = false; 
        static public function registerZend() 
        { 
         if (self::$zendLoaded) { return; } 
         set_include_path(sfConfig::get('sf_lib_dir').'/vendor'.PATH_SEPARATOR.get_include_path()); 
         require_once sfConfig::get('sf_lib_dir').'/vendor/Zend/Loader/Autoloader.php'; 
         Zend_Loader_Autoloader::getInstance(); 
         self::$zendLoaded = true;   
         }  
        } 
    

Tất cả điều này có thể được tìm thấy trong các Symfony hướng dẫn ở đây: http://www.symfony-project.org/jobeet/1_4/Doctrine/en/17

2

Từ các cuộc thảo luận ở trên:

Tôi đã suy nghĩ để sử dụng Symfony như là cơ sở + thành phần Zend khi cần thiết. Vì vậy, tôi sẽ sử dụng cấu trúc thư mục của Symfony nhưng không có bootstrap và ini của Zend.

Từ kinh nghiệm của tôi với ZF tôi sẽ nói, điều này chắc chắn có thể được thực hiện và đáng để bắt đầu.

Bạn sẽ phải haggle với Tự động tải một chút (có lẽ bạn nên tải tất cả Zend có liên quan bao gồm thủ công và không sử dụng bộ nạp tự động), nhưng ngoài ra, tôi không thể thấy bất kỳ vấn đề nào. (từ chối trách nhiệm: Tôi không biết sâu về Symfony chút nào và không thể bình luận về những xung đột không gian tên có thể, nhưng thấy Zend được xây dựng để tránh những thứ đó, và Symfony là một framework hoàn thiện, tôi không nghĩ rằng bạn sẽ gặp phải bất cứ điều gì không thể.)

2

Nếu bạn đang sử dụng Symfony làm khung cấp cao nhất của mình, nó không đáng kể.

Thực tế, tích hợp thành phần khung công tác Zend thậm chí được sử dụng làm một phần của standard symfony tutorial.

+0

Tôi không nói gì về giáo lý. Tôi đang nói về Zend_Mail, mà anh ta tích hợp ở gần cuối. – timdev