Как я могу получить доступ к функциям подкласса, используя пространства имен?

0

Итак, у меня есть несколько классов, с которыми я пытаюсь использовать пространства имен PHP, и у меня есть проблемы с доступом к функциям в классе нижнего уровня.

Вот как это сложилось...

Activity → Post

Activity имеет пространство имен activity и Post имеет пространство имен post

В верхней части моего класса Post у меня есть этот код.

namespace Post;
use activity\activity;

Это код, созданный PHPStorm, когда я создал файл класса, а затем расширил класс Activity.

Поэтому, когда я пытаюсь получить доступ к своим публичным функциям внутри Post, я пробовал оба этих метода...

\activity\post::function();

А ТАКЖЕ

$post = new \activity\post();
$post->function();

Но PHPStorm говорит, что ни один из них не существует.

Итак, каков фактический способ доступа к этим функциям более низкого уровня?

Я немного искал Google, но, видимо, я не искал правильных вещей, потому что ничего не нашел о подклассах.

Большое спасибо за вашу помощь в понимании того, как это работает.

  • 1
    Ваше пространство имен для Post не выглядит правильным. Ваше имя класса определяет последний термин в ссылке на пространство имен PHP, а пространство имен - это все термины перед ним. Например, вы бы сделали namespace AppName; а затем имя class Post { ... , затем обратитесь к нему, используя use AppName\Post;
  • 0
    Хорошо, тогда мне даже не нужно настраивать пространство имен для Post. Расширение автоматически добавит его к тому, что я думаю. Спасибо!
Показать ещё 2 комментария
Теги:
oop

1 ответ

1
Лучший ответ

Не используйте \activity, используйте activity.

\activity использует пространство имен \ (или base).

Использование не расширяет класс, он создает псевдоним. Поскольку у вас есть Use activity\activity это делает так, что вы можете получить доступ к функциям в классе activity, запустив activity::function() а не используя полное пространство имен \activity\activity::function().

Вы также можете определить use \activity\activity as test и доступа, например test::function().

Я не уверен в том, что пространства имен имеют то же имя, что и классы, но sjagr адресован в комментариях.

  • 0
    Итак, для доступа к функциям в Post я бы использовал activity\post::function() - это правильно?
  • 0
    @Mark Я добавил еще немного информации в свой пост после более тщательного прочтения вашего вопроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню