Tôi sử dụng để làm việc trong các ngôn ngữ như C#
/Java
/Python
trong đó mỗi lớp sẽ có tập tin riêng của mình, và cho một lớp để xem các lớp khác, bạn sẽ nhập khẩu gói chứa những lớp học. Cách này hoạt động trong php
? Tài liệu hướng dẫn cho bạn thấy cách tạo các lớp, nhưng tôi không hiểu làm thế nào nó phù hợp với nhau trong một ngữ cảnh php
. Tôi biết về tuyên bố bao gồm, mà chỉ dính các tập tin với nhau về cơ bản.php oop - mỗi tệp lớp khác nhau? gói nhập? vv
Trả lời
Bạn có thể sử dụng __autoload
function __autoload($class_name) {
include 'classes/'.$class_name . '.php';
}
Vì vậy, đặt mỗi lớp duy nhất trong tập tin riêng của mình trong thư mục lớp học. Khi bạn muốn sử dụng lớp đó, nó sẽ bao gồm nó. Thông tin thêm: http://php.net/manual/en/language.oop5.autoload.php
Cập nhật: Khi tôi trả lời câu hỏi này hoàn toàn hợp lệ. Bây giờ nó vẫn hoạt động, nhưng hãy ghi nhớ PHP.net kể từ đó nói điều này:
spl_autoload_register() cung cấp một sự thay thế linh hoạt hơn cho các lớp tự động nạp . Vì lý do này, việc sử dụng __autoload() là không được khuyến khích và có thể bị phản đối hoặc bị xóa trong tương lai.
+1 để bao gồm liên kết tham chiếu –
Ngoài ra, hãy tham khảo nhìn vào: http://www.php.net/manual/en/function.spl-autoload-register.php – Mchl
Hãy tưởng tượng bạn đã làm cho đối tượng của bạn bằng PHP trong một tập tin gọi là myObject.php
<?php
class myObject
{
public function __construct()
{
echo "Hello, World";
}
}
?>
Và trong tập tin khác, bạn muốn sử dụng các đối tượng (chúng ta hãy gọi myfile.php này). Bạn sẽ phải bao gồm đối tượng của mình - như sau:
<?php
include("myObject.php");
$intance = new myObject();
?>
Khá đơn giản.
Trong PHP, bạn có thể thực hiện theo nhiều cách khác nhau, trình biên dịch không giới hạn bạn.
Bạn có thể có 1 lớp trong 1 file, 5 lớp trong 1 file, 1 lớp trên một số file sử dụng bao gồm ...
Nhưng thường nó vẫn còn 1 lớp trong 1 file, và nếu bạn có nhiều những người tí hon - bạn cũng có thể có chúng trong 1 thư mục.
Khi thực hiện 1 lớp trong 1 tệp có cùng tên, bạn có thể thiết lập tự động tải lớp để bạn không cần phải viết bao gồm của mình.
Bạn KHÔNG thể chia lớp cho nhiều tệp. Xem ở đây ví dụ: http://stackoverflow.com/questions/1957732/can-i-include-code-into-a-php-class/1957830#1957830 – yokmp
Cách đơn giản nhất:
- xác định các lớp học của bạn trong "lớp học" thư mục ứng dụng
- init như hình dưới đây
- tên tập tin tên lớp như tên lớp thường của họ với .php hậu tố (MyClass = > classes/myclass.php)
Init code:
set_include_path ("./classes");
spl_autoload_register();
//class is automatically loaded from ./classes/myclass.php
$object_instance = new MyClass();
Kể từ PHP 5.3.0, bạn nên sử dụng hàm spl_autoload_register() vì __autoload() được cho là không dùng nữa trong tương lai.
Một cách dễ dàng để sử dụng chức năng này:
1) Đặt mỗi tập tin lớp vào thư mục 'lớp'
2) Chạy một chức năng ẩn danh bên spl_autoload_register() mà xác định thư mục lớp học của bạn:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.php';
});
Bây giờ khi bạn cố gắng sử dụng một lớp chưa được xác định trong mã của bạn, nó sẽ kiểm tra thư mục lớp đó lần cuối trước khi bạn gặp lỗi.
Điều này là tuyệt vời nhưng điều này được sử dụng tốt nhất khi bạn muốn trình nạp tự động của riêng bạn với tên riêng của nó như được mô tả trong Ví dụ # 1 ở đây: http://php.net/manual/en/function.spl-autoload-register.php Trong trường hợp này __autoload là đủ. –
- 1. PHP-OOP mở rộng hai lớp?
- 2. Làm cách nào để nhập hai lớp có cùng tên trong các gói khác nhau?
- 3. PHP: Ví dụ OOP thực tế
- 4. PHP - một open_basedir khác nhau cho mỗi máy chủ ảo
- 5. PHP OOP: cách sử dụng một lớp MySQL chung trong các lớp khác
- 6. Symfony 2 cách nhập tệp LESS từ một gói khác
- 7. PHP bao gồm các lớp học trong lớp khác
- 8. Làm cách nào để nhập cùng một gói từ các gói osgi khác nhau?
- 9. PHP OOP Lập trình MySQL
- 10. Sự khác nhau giữa đối tượng và lớp trong PHP?
- 11. các tệp js nhỏ khác nhau trên mỗi trang VS. 1x tệp js toàn trang web?
- 12. các giá trị khác nhau cho các biến lớp trong mỗi phân lớp trong python
- 13. Tạo một siêu lớp có một biến tĩnh khác nhau cho mỗi phân lớp trong C#
- 14. Chuỗi phương pháp PHP OOP
- 15. Python một lớp cho mỗi mô đun và gói
- 16. Gói nhập liệu Actionscript 3. * so với gói nhập.Class
- 17. Nhận cột khác nhau trong mỗi hàng
- 18. có bao nhiêu lớp học cho mỗi gói? phương pháp cho mỗi lớp học? dòng cho mỗi phương pháp?
- 19. nhập module từ thư mục khác nhau
- 20. Sự khác nhau giữa nhập khẩu java.util. *; và nhập java.util.Date; ?
- 21. Cách sử dụng phiên bản php riêng biệt cho các tệp php khác nhau
- 22. Nhập tệp XLSX vào một mảng PHP
- 23. Lớp học "if/except" vv
- 24. OOP Sự khác biệt giữa một lớp dẫn xuất và một lớp kế thừa?
- 25. Nhập một lớp vào một tệp JSP
- 26. Thiết kế lớp học của hệ thống đăng nhập hướng đối tượng trong php
- 27. Nhập lớp Java tùy chỉnh
- 28. Đây là OOP hoặc giống như OOP
- 29. Nhập nhiều gói Scala
- 30. Chọn lớp học để sử dụng trong thiết kế OOP php
bản sao có thể có của [Nhập gói hoặc tự động tải cho PHP?] (Http://stackoverflow.com/questions/616231/import-package-or-autoloading-for-php) – Gordon
* (tipp) * tìm kiếm tự động tải và quy tắc mã trong PHP – Gordon
Cá nhân, tôi thấy rất hợp lý khi có từng lớp trong tệp riêng của nó ... nhưng sử dụng trình nạp tự động thay vì nhập khẩu –