Tôi đã đăng một số câu hỏi trước đây về việc sử dụng Không gian tên trong PHP và từ những gì tôi nhận được, mã ví dụ này tôi có bên dưới sẽ hoạt động.Không thể tìm thấy Class với PHP Namespace
Tuy nhiên tôi gặp lỗi khi cố gắng sử dụng Không gian tên trong PHP như thế này. Dưới đây là lỗi đầu tiên khi chạy đoạn code dưới đây như là ...
Fatal error: Class 'Controller' not found in E:\Controllers\testing.php on line 6
E: \ khiển \ testing.php tập
<?php
use \Controller;
include('testcontroller.php');
$controller = new Controller;
$controller->show();
?>
E: \ khiển \ testcontroller.php tập
<?php
use \Library\Registry;
namespace Controller
{
class Controller
{
public $registry;
function __construct()
{
include('E:\Library\Registry.class.php');
$this->registry = new Registry;
}
function show()
{
echo $this->registry;
echo '<br>Registry was ran inside testcontroller.php<br>';
}
}
}
?>
E: \ Library \ Registry.class.php tập
<?php
namespace Library\Registry
{
class Registry
{
function __construct()
{
return 'Registry.class.php Constructor was ran';
}
}
}
?>
Như bạn thấy, tôi đã cố gắng làm cho nó đơn giản nhất có thể chỉ để có được phần Không gian làm việc. Tôi đã thử các biến thể khác nhau và dường như không thể tìm ra.
Ví dụ tốt, tôi đã tìm ra điều này trong đêm qua nhưng tốt cho bạn để mô tả nó. Vì vậy, tôi nghĩ rằng tôi sẽ tốt hơn hết để đặt tất cả các lớp 'Thư viện' vào cùng một không gian tên như' Thư viện' và sau đó trên bộ kiểm tra ở trên, tôi có thể sử dụng 'sử dụng Thư viện \ Classname' cho mỗi lớp trong thư viện mà tôi cần trong đó điều khiển để tôi có thể đánh giá chúng như thế này 'mới Registry' vv ... trên http://www.php.net/manual/en/language.namespaces.importing.php Tôi nghĩ rằng đó là nói rằng đây là 'nhập khẩu toàn cầu class' vì vậy tôi đã không chắc chắn nếu nó là một ý tưởng tồi – JasonDavis
Tôi đang cố gắng để hạn chế dependecies của mỗi lớp, đó là lý do tại sao đối với tôi nó không phải là khó sử dụng tên đầy đủ đủ điều kiện cho lớp. – Timur
Thats sai: Với 'use' bạn cũng định nghĩa một bí danh cho một lớp cụ thể. Trong ví dụ 'use \ Controller; Bộ điều khiển mới, 'nó không phải là rất rõ ràng, nhưng bạn có thể thử' sử dụng Vendor \ Package \ Component \ Controller; Bộ điều khiển mới'. Ý tôi là: Sai, bạn cần xác định không gian tên của một lớp _ trong mọi trường hợp_. Xem liên kết trong bình luận jasondeavis. Mô tả của nó, cách PHP giải quyết các tên lớp tương đối. – KingCrunch