2011-08-19 22 views
48

Tôi đang triển khai các không gian tên trong dự án hiện có của mình. Tôi thấy rằng bạn có thể sử dụng từ khóa 'sử dụng' để nhập các lớp vào không gian tên của bạn. Câu hỏi của tôi là, tôi cũng có thể nhập tất cả các lớp từ 1 không gian tên vào một không gian tên khác. Ví dụ:PHP cách nhập tất cả các lớp từ một không gian tên khác

namespace foo 
{ 

    class bar 
    { 

     public static $a = 'foobar'; 

    } 

} 

namespace 
{ 
    use \foo; //This doesn't work! 
    echo bar::$a; 
} 

Cập nhật cho PHP 7+

Một tính năng mới trong PHP 7 được nhóm tờ khai. Điều này không làm cho nó dễ dàng như sử dụng 1 'tuyên bố sử dụng' cho tất cả các lớp trong một không gian tên nào đó, nhưng làm cho nó dễ dàng hơn một chút ...

đang

Ví dụ:

<?php 
// Pre PHP 7 code 
use some\namespace\ClassA; 
use some\namespace\ClassB; 
use some\namespace\ClassC as C; 

// PHP 7+ code 
use some\namespace\{ClassA, ClassB, ClassC as C}; 
?> 

Xem thêm: https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations

+1

Tâm trí bạn rằng "Nhập" không có nghĩa là bạn thực sự có thể tìm thấy lớp đó. Bạn vẫn cần phải có lớp đó có sẵn hoặc một hướng dẫn sử dụng yêu cầu hoặc một autoloader. – Nanne

+1

ofcourse, nhưng tôi không biết làm thế nào để đặt nó nói cách khác. – Rob

+0

Tôi nghĩ như vậy, nhưng để tránh nhầm lẫn :) – Nanne

Trả lời

53

Điều này là không thể trong PHP.

Tất cả các bạn có thể làm là:

namespace Foo; 

use Bar; 

$obj = new Bar\SomeClassFromBar(); 
+7

Ok cảm ơn, quá xấu ... – Rob

+2

Hoặc tất nhiên, bạn có thể đặt các lớp cụ thể trong các điều khoản sử dụng. ('sử dụng Bar \ SomeClassFromBar; $ obj = new SomeClassFromBar();') –

+8

Ồ không có lý do tại sao PHP không cung cấp ... –

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