0

Заранее извиняюсь за возможно глупый вопрос.

Я не нашел адекватной документации с более-менее развернутыми примерами и сам не смог разобраться.

file1.php

namespace myProject {

class myClass {

    private $myVariable = 'THIS IS WORK!';

    function myFunction() {

        return $this->myVariable;

    }
}
}

file2.php

include 'file1.php';
echo myProject\myClass::myFunction(); \\ Не работает, ибо это не статичный класс
echo myProject\myClass\myFunction(); \\ Не работает, PHP говорит, что не находит такой функции в данном файле.

Я опустил <? ?> здесь. Собственно, вопрос: как мне обратиться к функции, не делая ее статичной? Возможно вообще это?

Еще такой вопрос: как быть с $this, если я сделаю функцию статичной, то и переменную придется сделать статичной и обращаться к ней уже через ::.

Главным все же является то, как обратиться к функции, не делая ее статичной.

Заранее огромное спасибо. Если можно еще, дайте нормальную документацию по namespace, могу и сам почитать :)

2
  • 2
    А может, ее сделать обычной функцией, а не методом? namespace myProject { function myFunction() { //.... return $myVariable; } }
    – KoVadim
    19 сен 2014 в 19:25
  • 1
    Нельзя вызвать нестатичный метод класса, не создавая объекта. Для передачи как callable надо передать массив из двух значений: первое - объект, второе - имя функции: call_user_func([new myClass, 'myFunction']);
    – etki
    19 сен 2014 в 19:31

0

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Посмотрите другие вопросы с метками или задайте свой вопрос.