如何使用命名空间访问子类的函数?
How do I access a subclass's functions using namespaces?
所以,我有一些 classes 我正在尝试使用 PHP 的名称空间,但在访问最低级别 class 中的功能时遇到了一些问题。
布局如下...
Activity -> Post
Activity
的命名空间为 activity
,Post
的命名空间为 post
在我的顶部 Post class 我有这个代码。
namespace Post;
use activity\activity;
这是 PHPStorm 在我创建 class 文件然后扩展 Activity class.
时创建的代码
因此,当我尝试访问 Post 中的 public 函数时,我已经尝试了这两种方法...
\activity\post::function();
和
$post = new \activity\post();
$post->function();
但是 PHPStorm 告诉我这些都不存在。
那么,访问这些较低级别功能的实际方法是什么?
我在谷歌上搜索了很多,但显然我没有在搜索正确的东西,因为我没有找到任何关于 sub classes 的信息。
非常感谢您帮助理解这是如何工作的。
不要使用\activity
,使用activity
。
\activity
正在使用 \
(或基本)命名空间。
使用不会扩展 class,它会创建一个别名。因为你有 Use activity\activity
这使得你可以通过 运行 activity::function()
访问 activity
class 中的函数,而不是使用完整的命名空间 \activity\activity::function()
.
您还可以定义 use \activity\activity as test
并访问 test::function()
.
等函数
虽然我不确定命名空间与 classes 同名的意义,但 sjagr 在评论中解决了这个问题。
所以,我有一些 classes 我正在尝试使用 PHP 的名称空间,但在访问最低级别 class 中的功能时遇到了一些问题。
布局如下...
Activity -> Post
Activity
的命名空间为 activity
,Post
的命名空间为 post
在我的顶部 Post class 我有这个代码。
namespace Post;
use activity\activity;
这是 PHPStorm 在我创建 class 文件然后扩展 Activity class.
时创建的代码因此,当我尝试访问 Post 中的 public 函数时,我已经尝试了这两种方法...
\activity\post::function();
和
$post = new \activity\post();
$post->function();
但是 PHPStorm 告诉我这些都不存在。
那么,访问这些较低级别功能的实际方法是什么?
我在谷歌上搜索了很多,但显然我没有在搜索正确的东西,因为我没有找到任何关于 sub classes 的信息。
非常感谢您帮助理解这是如何工作的。
不要使用\activity
,使用activity
。
\activity
正在使用 \
(或基本)命名空间。
使用不会扩展 class,它会创建一个别名。因为你有 Use activity\activity
这使得你可以通过 运行 activity::function()
访问 activity
class 中的函数,而不是使用完整的命名空间 \activity\activity::function()
.
您还可以定义 use \activity\activity as test
并访问 test::function()
.
虽然我不确定命名空间与 classes 同名的意义,但 sjagr 在评论中解决了这个问题。