2012-04-19 31 views
5

Có cách nào để có được một không gian tên PHP để cho phép các chức năng gọi trong một không gian tên như thể chúng là toàn cầu không?Không gian tên PHP Toàn cầu

Ví dụ:

handle() 

Thay vì:

prggmr\handle() 

Đây là mã ví dụ của tôi:

<?php 
require_once 'prggmr/src/prggmr.php'; 

prggmr\handle(function() { 
    echo 'This is a test scenario'; 
}, 'test'); 

prggmr\signal('test'); 

Aliasing không làm việc cho các chức năng:

<?php 
require 'prggmr/src/prggmr.php'; 
use prggmr\handle; 

handle(function(){ 
    echo "Test"; 
}, "test"); 

Kết quả:

Fatal error: Call to undefined function handle() 

Trả lời

2

Không dành cho toàn bộ không gian tên, không. Nhưng đối với tên duy nhất, bạn có thể làm

use p\handle; 

aliasesp\handle chỉ handle.

+0

Xin cảm ơn Tôi đã thử cách này. Vấn đề là tập tin chính là không gian tên: prggmr, điều này là cho tôi một undefined: ---- JREAM

0

Nghĩ rằng tôi muốn thêm một câu trả lời cho PHP hiện đại như tôi vừa học được rằng:

Trước khi PHP 5.6 không phải chức năng cũng không hằng số có thể được nhập khẩu qua câu lệnh sử dụng. Kể từ PHP 5.6 aliasing hoặc chức năng nhập khẩu và tên hằng số được cho phép.

Vì vậy, mẫu mã thứ hai của bạn sẽ hoạt động tốt trong những ngày này.

Cũng đáng nói đến là bạn có thể xác định phạm vi khối cho các không gian tên PHP, though it's discouraged. Vì vậy, điều này sẽ hoạt động:

<?php 
require_once 'prggmr/src/prggmr.php'; 

namespace prggmr { 
    handle(function() { 
     echo 'This is a test scenario'; 
    }, 'test'); 

    signal('test'); 
} 
Các vấn đề liên quan