Php &引用;调用未定义的方法";-但我知道它存在

Php &引用;调用未定义的方法";-但我知道它存在,php,Php,这行代码: echo "<strong> {$this->author->last} {$this->date->shortYear()}</strong> ..."; 即使在Date.php(包含在Card.php中)中: php中有一个日期类。我猜你实例化了错误的日期类 将Card.php中日期类的名称更改为myDate 然后重试$this->date=new myDate 看看这是怎么回事 创建一个单独的文件进行测试,以删除可能导致混淆的任

这行代码:

echo "<strong> {$this->author->last} {$this->date->shortYear()}</strong> ...";
即使在Date.php(包含在Card.php中)中:


php中有一个日期类。我猜你实例化了错误的日期类

将Card.php中日期类的名称更改为myDate

然后重试$this->date=new myDate

看看这是怎么回事

创建一个单独的文件进行测试,以删除可能导致混淆的任何其他内容

直流电

无视查尔斯不必要的否决票

另一种测试方法是进入Card.php并为Date添加或添加构造函数

function __construct() {
        echo "created date object\n";
}    
然后,当您创建日期对象时,它会打印出来。如果它不打印,那么您就知道您正在实例化一个不同的日期对象

我经常使用的另一种方法是

$this->date = new Date;
var_dump($this->date);
如果它显示的是不同的类结构,那么您需要的是错误的日期对象

如果没有,则查看$this->date是否没有在任何地方重新定义

e、 g


DC

您实例化了错误的
日期
类。您可以使用PHP的
get_class_methods()
函数来确认哪些方法可用。

我知道这是一个老问题,但我只是对此进行了一些争论

我使用Netbeans在远程服务器上编写代码,结果证明,出于某种原因,它没有将文件同步到远程主机

这尤其令人恼火,因为我可以按住ctrl键单击类并查看该方法,在同一个类中进入另一个方法将打开看似正确的文件


发现问题后,我只需右键单击该文件并单击“上载”。

如果您使用的是自动将更改从IDE上载到检查页面的web服务器的设置。可能是由于它没有上载文件而意外发生。

您还必须检查所使用的名称空间。可以有两个名称相同但来自不同名称空间的类。如果在同一名称空间中创建了两个具有相同名称的类。然后构造或访问什么类将取决于它们被解释的顺序

还有那些日期问题。如果要访问核心名称空间,可以引用

new\DateTime()


而不是新的日期时间()

请注意,请检查您是否正在加载正确的
Date.php
文件。我知道这是因为我在第16行(“$this->Date=new Date;”)中定义了一个日期,没有任何错误。该行用于实例化类。我指的是何时包含
Date.php
。正如Kalium所说,大部分或全部
Card.php
都会有所帮助。这并不意味着您使用了正确的日期类——只要您有一个。请尝试使用显式路径包含Data.php或将日期类本身放入Card.php中。您可能没有包括您认为是的Date.php。php日期类被称为
DateTime
,而不是Date.Pear::Date实际上感谢您的无理否决票,即使php中没有Date类,它也是测试Itharles观点的有效方法:“php中有一个Date类”与“Pear中有一个Date类”不同.我的观点是,其他地方有叫做Date的课程。它可能被包括在这条线路的某个地方。它是php本机类还是来自扩展或包含的类并不重要。这与这个问题有什么关系?如果你没有上传你新写的函数,解释器很可能找不到它。这就是它的关系。我刚刚犯了这个错误,在我的头上打了几分钟补丁,直到我发现我的IDE可能没有上传我的更改。情况是这样的。。。
function __construct() {
        echo "created date object\n";
}    
$this->date = new Date;
var_dump($this->date);
$this->date = new Date;

....

$this->date = new DateTime;