Tôi hơi bối rối về cách các hàm tạo hoạt động trong PHP.Các hàm tạo PHP và hàm tĩnh
Tôi có một lớp với một hàm tạo được gọi khi tôi khởi tạo một đối tượng mới.
$foo = new Foo($args);
__construct($params)
được gọi trong lớp Foo
và nó thực thi mã khởi tạo thích hợp.
Tuy nhiên khi tôi sử dụng lớp để gọi hàm tĩnh, hàm tạo được gọi lại.
$bar = Foo::some_function(); //runs the constructor from Foo
Điều này làm cho hàm tạo thực thi, chạy mã khởi tạo đối tượng mà tôi chỉ định khi tạo đối tượng Foo
mới.
Tôi có thiếu điểm của cách các nhà thầu hoạt động không? Hoặc có cách nào để ngăn không cho __construct()
thực thi khi tôi sử dụng lớp để thực hiện cuộc gọi chức năng tĩnh không?
Tôi có nên sử dụng chức năng "nhà máy" thay vì thực hiện khởi tạo đối tượng không? Nếu vậy, điểm của nhà xây dựng là gì?
:: EDIT :: Tôi có một biểu mẫu nơi người dùng có thể tải ảnh lên album (create_photo.php) và khu vực nơi họ có thể xem album (view_photos.php). Khi gửi biểu mẫu:
$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..);
Trình tạo ảnh tạo và lưu ảnh. Tuy nhiên, trong view_photo.php, khi tôi gọi:
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
Điều này khiến cho trình tạo ảnh của bạn chạy!
Điều đó không đúng. Vui lòng cung cấp mã đầy đủ nơi hàm tạo được gọi bằng một cuộc gọi tĩnh! – mAu
Hiển thị mã thực của bạn. Những gì bạn đang viết không chính xác. –
Làm thế nào để các nhà xây dựng trông giống như, từ những hành vi nào bạn kết luận rằng nó chạy? – markus