Warning: fopen(/homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/gt-cache/vi/_vi_tag_yaml) [function.fopen]: failed to open stream: Disk quota exceeded in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1183

Warning: flock() expects parameter 1 to be resource, boolean given in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1184

Warning: fwrite(): supplied argument is not a valid stream resource in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1188

Warning: fclose(): supplied argument is not a valid stream resource in /homepages/30/d192847469/htdocs/evilprofessor.co.uk/public_html/wp-content/plugins/global-translator/translator.php on line 1190
Evilprofessor.co.uk »yaml

Bài viết được gắn thẻ: yaml

Bắt đầu Nhanh Symfony DI (Dependency Injection) Hướng dẫn

, thứ bảy ngày 14 tháng 8 2010 14:21

Dependency Injection (DI)?

Dependency injection là một kỹ thuật cho phép cho các đối tượng lỏng trong một ứng dụng phần mềm. Nói chung nếu một đối tượng đòi hỏi phải truy cập các chức năng khác sẽ được khởi tạo nội bộ hàng đầu cho các hệ thống chặt chẽ. Thực hiện tiêm phụ thuộc, chúng ta tiêm các đối tượng cần thiết sẵn sàng sử dụng (đôi khi cũng được gọi để đảo ngược của kiểm soát - IOC). Lấy ví dụ sau đây:

  <? Php
 lớp DecisionMaker {
     chức năng công cộng makeDecision (mảng $ tham số) {
         / / Cần các bộ chuyển đổi cơ sở dữ liệu
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore (tham số);
         / * ...  Quyết định logic của một số chi tiết ...  * /
         trở lại ($ parameterScore> 50);
     }
 } 

Đoạn mã này được chặt chẽ cùng với các đối tượng DecisionParameters. Viết lại một cách lỏng lẻo, chúng tôi muốn có một cái gì đó giống như ....

  <? Php
 lớp DecisionMaker {
     private $ _dp;
     xây dựng chức năng công cộng __ (dp) {
         $ This-> _dp = $ dp;
     }
     chức năng công cộng makeDecision (mảng $ tham số) {
         $ ParameterScore = $ this-> _dp-> getScore (tham số);
         / * ...  Quyết định logic của một số chi tiết ...  * /
         trở lại ($ parameterScore> 50);
     }
 } 

Trong khi đạt được những lợi ích của mã lỏng chúng tôi có thêm phức tạp như vậy mà mỗi một đối tượng được khởi tạo, chúng tôi cũng có để khởi tạo phụ thuộc của nó và vượt qua những trong quá. Ví dụ, điều này:

  $ Sự lựa chọn = mới DecisionMaker ();
 echo $ lựa chọn> makeDecision (array ('nỗ lực' => 'thấp', 'trở lại' => 'cao')); 

bây giờ trở thành:

  $ Dp = new DecisionParameters ();
 $ Sự lựa chọn = new DecisionMaker (dp);
 echo $ lựa chọn> makeDecision (array ('nỗ lực' => 'thấp', 'trở lại' => 'cao')); 

Tình trạng này trở nên đau đớn hơn khi số lượng phụ thuộc cho một lớp học được tăng lên, và điều gì sẽ xảy ra nếu các phụ thuộc mình có phụ thuộc? Điều này có thể khá nhanh chóng trở thành một cơn ác mộng hành chính đối tượng! Nhập container tiêm phụ thuộc (hoặc khung) ...
Tiếp tục đọc "nhanh Symfony bắt đầu DI (Dependency Injection) Hướng dẫn '»

Doctrine: datetime mặc định NOW ()

Bình luận (6)
, Thứ Tư 30 Tháng 12 2009 18:30

Tôi đã đấu tranh với việc thiết lập một lược đồ cơ sở dữ liệu cho một dự án Zend Framework . Tôi sử dụng cố gắng để sử dụng Doctrine ORM cho các mô hình cơ sở dữ liệu của tôi. Tôi cần phải thiết lập giản đồ để nó cho phép tôi để thiết lập một ngày và thời gian mặc định cho một cột `` datetime, ví dụ như khi thêm một tin nhắn mới nhận được thời gian hiện tại. Sau nhiều tìm kiếm và thử nghiệm, tôi thấy các giải pháp vì vậy tôi đang chia sẻ nó.

Trong YAML tập tin giản đồ của bạn chỉ đơn giản là làm như sau:

 Tin nhắn:
   actAs:
     Timestampable:
       tạo ra:
         tên: created_at
         loại: dấu thời gian
         định dạng: Ymd H: i: s
       cập nhật:
         Tên: last_updated
         loại: dấu thời gian
         định dạng: Ymd H: i: s
   cột:
     id:
       loại: số nguyên
       : true sơ cấp
       autoincrement: true
     Tên: string (255)
     email: string (300)
     tin nhắn: string (2000)

Nếu mặt khác bạn không muốn một cột `updated_at`, bạn có thể sử dụng sau đây:

 Tin nhắn:
   actAs:
     Timestampable:
       tạo ra:
         tên: created_at
         loại: dấu thời gian
         định dạng: Ymd H: i: s
       cập nhật:
         tàn tật: true
   cột:
     id:
       loại: số nguyên
       : true sơ cấp
       autoincrement: true
     Tên: string (255)
     email: string (300)
     tin nhắn: string (2000)












Panorama Theme theo Themocracy

6 khách truy cập trực tuyến tại
5 khách, 1 bots, 0 thành viên
Max khách truy cập hôm nay: 13 lúc 09:36 am UTC
Tháng này: 40 23-05-2012 03:33 am UTC
Năm nay: 69 27-02-2012 09:56 am UTC
Tất cả thời gian: 130 28-03-2011 10:40 pm UTC