2013-07-26 33 views
9

Tôi mới làm quen với cakephp. Tôi đã tìm thấy một phương pháp được sử dụng rộng rãiCakephp beforeFilter vs constructor

beforeFilter() 

Câu hỏi của tôi là, nó khác gì so với hàm tạo lớp? Nếu tôi gọi là

parent::beforeFilter(); 

từ hàm tạo thay vì trướcFilter(); Tôi chỉ muốn biết những gì nếu tôi viết cùng mã trong

public function __construct() { 
    // Code here 
} 

thay vì

public function beforeFilter() { 
} 

Cảm ơn

Trả lời

4

xây dựng() dùng để xây dựng, để tải những thứ bạn cần.

__construct() public Constructor

Tham số: ComponentCollection $ sưu tập Một ComponentCollection thành phần này có thể sử dụng để tải lười biếng thành phần của nó

http://api.cakephp.org/2.3/class-Component.html#___construct


beforeFilter () thi hành Các chức năng mà bạn CẦN phải được thực thi trước bất kỳ hành động nào khác

Bộ điều khiển :: beforeFilter() Chức năng này được thực hiện trước mọi hành động trong bộ điều khiển. Đây là nơi thuận tiện để kiểm tra phiên hoạt động hoặc kiểm tra quyền của người dùng.

http://api.cakephp.org/2.3/class-Controller.html#_beforeFilter

gọi trước khi hành động điều khiển. Bạn có thể sử dụng phương pháp này để cấu hình và tùy chỉnh các thành phần hoặc thực hiện logic mà cần phải xảy ra trước mỗi hành động điều khiển.

Lưu ý: Phương thức beforeFilter() sẽ được gọi cho các hành động bị thiếu và các hành động được dàn giáo.

http://book.cakephp.org/2.0/en/controllers.html#request-life-cycle-callbacks

Thông thường, bạn sẽ không cần một constructor như, khi sau ước CakePHP chỉ có rất ít tình huống mà bạn thực sự không có lựa chọn nào khác ngoài việc "lực lượng" tải một cái gì đó bằng tay ...

+0

Tôi không đồng ý về các quyền, đó là lời gọi hàm isAuthorized() được cho là. – burzum

+0

@burzum Bạn có nói rằng bạn không đồng ý với quan chức Chúng tôi có thể kiểm tra các điều khoản từ phương thức beforeFilted() và dựa trên đó, xác định những gì bạn muốn hiển thị trong khung nhìn, chính xác. Tôi không chắc chắn nếu chúng ta đang nói về cùng một điều hoặc nếu bạn đang đề cập đến một cái gì đó khác hoặc –

+0

Có, tôi làm như vậy Câu này là một chút gây hiểu lầm và nên trỏ đến thành phần Auth. đưa ra lời khuyên tốt hơn về địa điểm và cách thực hiện kiểm tra ủy quyền. một phiên bản cũ và tôi lười biếng cập nhật tài liệu. Tôi đã viết lại xác thực (https://github.com/cakephp/authentication) cho Cake3 sẽ đưa nó vào bản phát hành tiếp theo và tôi đang trong giai đoạn lên kế hoạch của lớp Cấp phép cho bản phát hành 3.x trở lên hoặc 4.0, sẽ có tính năng trừu tượng tốt hơn nhiều và triển khai dựa trên chính sách. Ý tưởng được chào đón. – burzum

4

Chỉ cần đọc các mô tả của phương pháp này trong lớp điều khiển:

Được gọi trước thao tác bộ điều khiển. Bạn có thể sử dụng phương pháp này để định cấu hình và tùy chỉnh các thành phần hoặc thực hiện logic cần xảy ra trước mỗi hành động của bộ điều khiển.

beforeFilter được gọi bởi Dispatcher khi một URL được truy cập và một hành động của một bộ điều khiển được kích hoạt:

  1. Constructor
  2. beforeFilter
  3. Action
  4. BeforeRender
  5. AfterFilter

Ít khi có một trường hợp (ít nhất là tôi không thể nhớ), trong đó tôi phải làm điều gì đó trong hàm tạo. Đây cũng là một thiết kế kiến ​​trúc tốt. Hàm khởi tạo chỉ khởi tạo mọi thứ và beforeFilter cho phép bạn cấu hình (chủ yếu là các thành phần ví dụ) được khởi tạo trước đó.

0

bạn có thể tìm thấy một số định nghĩa liên quan từ các tài liệu chính thức CakePHP tại https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-app-controller:

"callback: Bộ điều khiển CakePHP đến được trang bị với callbacks bạn c sử dụng để chèn logic ngay trước hoặc sau khi các hành động của bộ điều khiển được hiển thị. beforeFilter(): Chức năng này được thực thi trước mọi hành động trong bộ điều khiển. Đây là một nơi thuận tiện để kiểm tra phiên hoạt động hoặc kiểm tra quyền của người dùng. "

Các vấn đề liên quan