继承类上的PHP new self()正在创建一个基类对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了继承类上的PHP new self()正在创建一个基类对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1229字,纯文字阅读大概需要2分钟。
内容图文
![继承类上的PHP new self()正在创建一个基类对象](/upload/InfoBanner/zyjiaocheng/788/5226169a1c31471d9c7fec5e067434cd.jpg)
参见英文答案 > New self vs. new static 3个
我有一个充当基类的类.然后我有几个继承它的类.我想开始使用静态语法加载继承的类,但行为没有多大意义.
直到现在我加载了这样的类,它完成了这项工作.
$obj = new foo();
$something = $obj->ByID(1);
我希望能够像这样调用ByID函数.
$something = foo::Get()->ByID(1);
上面的代码是有效的,但它没有调用继承的类,它正在加载基类.我想我可以看出为什么会这样,但它没有任何意义.在.NET中,“this”将始终应用于继承的对象,但它在这里对我不起作用.
我有一个基类栏,使用以下方法.这不会在继承的类中被覆盖.实际上,继承的类只包含1个单独的属性.
class bar
{
public $directory;
public function Get()
{
return new self();
}
public function ByID($id)
{
//get the record from the file by using $directory to find the file.
}
}
class foo extends bar
{
public $directory = "/something/";
}
我遇到的问题是,当我以静态方式加载类时,self()返回基类的对象而不是继承的类.我需要继承类的$directory属性.继承的类当然会包含其他函数和其他东西,但是现在这是阻止我实现这样的代码的障碍.知道我做错了什么吗?
我不想在每个继承的类中重写Get().使用laravel,我可以记住具有类似结构的模型类,您可以创建一个具有1个属性的模型,该属性是表的名称,并且不知何故它都工作正常.
解决方法:
请改用静态绑定.
public static function Get() {
return new static();
}
内容总结
以上是互联网集市为您收集整理的继承类上的PHP new self()正在创建一个基类对象全部内容,希望文章能够帮你解决继承类上的PHP new self()正在创建一个基类对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。