Php 为什么$this不是正确的对象类型?
我正试图在PHPLib中实现一个简单的PHP db框架(Medoo),但仍停留在以下方面: 我有这个结构 初始化的index.phpPhp 为什么$this不是正确的对象类型?,php,oop,medoo,Php,Oop,Medoo,我正试图在PHPLib中实现一个简单的PHP db框架(Medoo),但仍停留在以下方面: 我有这个结构 初始化的index.php 新medoo对象 新的应用程序对象 application类处理每个应用程序的常规设置,并从my medoo类扩展而来 每个应用程序都有自己的类(例如Foo)和一个Foo/app.php文件。foo类从应用程序类扩展而来。 foo/app.php文件生成视图,并在该文件中创建一个foo对象 但是它在Foo类中,我正试图用medoo类连接我的数据库。 medoo
- 新medoo对象
- 新的应用程序对象
非常感谢您的帮助。从您给出的代码和描述来看,我认为您面临范围界定问题 如果在
Foo
类中调用$this
,则不会返回到Medoo
(父)类,$this
在本例中指的是Foo
的直接实例。因此,您正在调用一个未给定的函数。正如你已经说过的
您需要的是PHP中的函数,因此可以在Foo
中调用Medoo
中的函数
作为官方文件中的简单示例:
<?php
class A {
function example() {
echo "I am A::example() and provide basic functionality.<br />\n";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.<br />\n";
parent::example();
}
}
$b = new B;
// This will call B::example(), which will in turn call A::example().
$b->example();
?>
另外,您不应该将所有属性都设置为public
,这是一种不好的做法,也是一种不好的范围界定。如果此类的任何子级都不能轻松访问它们,则应将其设置为private
;如果子级应该访问和操作它们,则应将其设置为protected
为了进一步保证此属性的可访问性,您需要。在medoo类中将其替换为self,并将属性设置为静态。您可以在问题中添加一些代码吗?类和索引?@KhorneHoly application.php Foo类的实际示例Foo/app.php Index.php的实际示例如果“application”是一个“medoo”,那么它包含一个“medoo”可能没有意义——但您正在“application”中构造一个“medoo”。我认为您的对象模型可能有一些根本性的缺陷?我有应用程序的Foo扩展,它是medoo的扩展,我不能使用parent::parent::get?我知道公众是不好的做法,但我在解决这个问题时有点绝望,我尝试了很多东西:p使用单亲仍然表明$this在错误之前仍然是一个Foo对象。。我期待应用程序?我甚至在foo类中尝试了parent::get,在Application类中尝试了parent::\u construct()