2012-04-19 11 views
5

Gibt es eine Möglichkeit, ein PHP-Namespace zu erhalten für den Aufruf von Funktionen innerhalb eines Namespace zu ermöglichen, als ob sie global waren?PHP Namespace Globale

Beispiel:

handle() 

Statt:

prggmr\handle() 

Hier ist mein Beispielcode:

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

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

prggmr\signal('test'); 

Aliasing funktioniert nicht für Funktionen:

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

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

Ergebnisse:

Fatal error: Call to undefined function handle() 

Antwort

2

nicht für einen ganzen Namespace, Nr. Aber für einzelne Namen, können Sie

use p\handle; 

die aliasesp\handle nur handle.

+0

Hallo danke ich habe es versucht. Die Sache ist, dass die Hauptdatei Namespace ist: prggmr, dies gibt mir eine undefinierte: ---- JREAM

0

Gedanken würde ich eine Antwort für moderne PHP hinzufügen, wie ich vor kurzem, dass gelernt:

Vor PHP 5.6 weder Funktionen noch Konstanten können über importiert werden die Verwendungsaussage. Ab PHP 5.6 Aliasing oder Import-Funktion und konstanter Namen erlaubt.

Ihr zweites Codebeispiel sollte in diesen Tagen gut funktionieren.

auch erwähnenswert, dass Sie einen Block Spielraum für PHP Namespaces definieren, though it's discouraged. So würde das funktionieren:

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

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

    signal('test'); 
}