2012-04-19 12 views
5

Czy istnieje sposób na uzyskanie przestrzeni nazw PHP, aby umożliwić funkcje wywoływania w przestrzeni nazw, tak jakby były globalne?Namespace PHP Global

Przykład:

handle() 

Zamiast:

prggmr\handle() 

Oto mój przykładowy kod:

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

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

prggmr\signal('test'); 

Aliasing nie działa dla funkcji:

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

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

Wyniki:

Fatal error: Call to undefined function handle() 

Odpowiedz

2

Nie dla całej przestrzeni nazw, nie. Ale dla pojedynczych nazwisk można zrobić

use p\handle; 

która aliasesp\handle do zaledwie handle.

+0

Cześć dzięki, spróbowałem tego. Chodzi o to, że głównym plikiem jest namespaced: prggmr, to daje mi niezdefiniowane: ---- JREAM

0

myślałem, że dodać odpowiedź na nowoczesne PHP jako Niedawno dowiedziałem się, że:

Przed PHP 5.6 ani funkcji, ani stałymi mogą być importowane przez instrukcja użycia. Od PHP 5.6 aliasowanie lub importowanie funkcji i nazw stałych jest dozwolone.

Twoja druga próbka kodu powinna teraz działać dobrze.

Warto również wspomnieć, że można zdefiniować zakres bloków dla przestrzeni nazw PHP, though it's discouraged. Więc to zadziała:

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

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

    signal('test'); 
}