Tôi đang tìm hiểu về các không gian tên trong PHP 5.3 và tôi muốn sử dụng Tự động tải không gian tên. Tôi đã tìm thấy số này SplClassLoader class, nhưng tôi không thể tìm ra cách hoạt động của nó.Tự động tải bằng PHP với SplClassLoader?
Hãy nói rằng tôi có cấu trúc thư mục như thế này:
system
- framework
- http
- request.php
- response.php
index.php
SplClassLoader.php
Làm thế nào để kích hoạt tính năng tự động load lớp? Không gian tên nào cần request.php
và response.php
có?
Đây là request.php
:
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructer!";
}
}
Và đây là response.php
:
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructed!";
}
}
Và trong index.php
tôi có:
require_once("SplClassLoader.php");
$loader = new SplClassLoader('framework\http', 'system/framework');
$loader->register();
$r = new Request();
tôi nhận được thông báo lỗi này:
Fatal error: Class 'Request' not found in C:\wamp\apache\htdocs\php_autoloading\index.php on line 8
Tại sao tính năng này không hoạt động? Làm thế nào tôi có thể sử dụng SplClassLoader
trong các dự án của tôi để nó tải/yêu cầu các lớp học của tôi, và làm thế nào tôi nên thiết lập và đặt tên thư mục và không gian tên?
Tôi nghĩ tên tệp và thư mục của bạn có thể cần phải bắt đầu bằng chữ in hoa? –
@Adrian Macneil: Không có trong cửa sổ, nhưng bạn nói đúng, điều này nên được thực hiện. – hakre