2015-01-17 5 views
2

Я играю с CMS, который использует пространства имен, и я пытаюсь использовать его вместо того, чтобы включать файлы и использовать функции в этих файлах.Использование функции внутри пространства имен PHP

Из того, что я понял и попробовал, у меня есть файл, загруженный как PSR-4 с объявленным пространством имен, классом и функцией, внутри которой я бы хотел получить доступ. Это выглядит следующим образом:

namespace MyFunctions; 

    class basic { 

     function say_hello($a) { 
      echo "Hello, $a"; 
     } 

    } 

И из другого файла, я могу видеть, что пространство имен «MyFunctions» действительно загружается при проверке с использованием get_declared_classes() функции. Однако я полностью потерял возможность использования функции say_hello().

Я пробовал:

use MyFunctions; 

// instantiate class 
$a = new basic(); 

// this gives me 'call to undefined function' 
echo say_hello("Bob"); 

Я пытался рыть в других примерах, и я чавканье на бит пытается получить доступ к этой функции. Может ли кто-нибудь дать мне пример того, как я мог бы использовать функцию say_hello() из другого файла? Любая помощь была бы высоко оценена, спасибо!

+0

Несмотря на то, что класс содержит имена, вам все равно необходимо создать экземпляр, прежде чем обращаться к его методам. –

ответ

3

С настройкой у вас здесь. Для запуска этой функции вам необходимо выполнить следующее.

(new MyFunctions\basic)->say_hello("Bob"); 

(я не рекомендую этот метод, он создает объект без причины.)

Что я предполагаю, что вы хотели было:

namespace MyFunctions; 

function say_hello($a) 
{ 
    echo "Hello, $a"; 
} 

в какой момент вы могли бы использовать

// this gives you 'Hello, Bob' 
MyFunctions\say_hello("Bob"); 
+1

The la tter пример был именно то, что мне нужно! Наверное, меня в основном смутил сам класс, который мне не нужен. – taylor

Смежные вопросы