Php 帮助学习一个类的方法?
从下面的演示中,您可能可以看到我正在尝试做的事情,构造方法可以工作,但是测试方法不工作,给出了错误 致命错误:对非对象调用成员函数get() 有人能告诉我怎么做这样的工作吗Php 帮助学习一个类的方法?,php,class,Php,Class,从下面的演示中,您可能可以看到我正在尝试做的事情,构造方法可以工作,但是测试方法不工作,给出了错误 致命错误:对非对象调用成员函数get() 有人能告诉我怎么做这样的工作吗 <?PHP //user.class.php file class User { public $pic_url; function __construct($session) { if($session->get('auto_id') != ''){
<?PHP
//user.class.php file
class User
{
public $pic_url;
function __construct($session)
{
if($session->get('auto_id') != ''){
$this->pic_url = $session->get('pic_url');
}else{
return false;
}
}
function test($session)
{
return $this->pic_url = $session->get('pic_url');
}
}
$user = new user($session);
//this works
echo $user->pic_url;
//this one does not work
echo $user->test();
?>
您没有向函数提供$session。您没有向函数提供$session。请尝试以下操作:
<?php
//user.class.php file
class User
{
public $pic_url;
public function __construct($session)
{
if($session->get('auto_id') != ''){
$this->pic_url = $session->get('pic_url');
} else {
return false;
}
}
public function test($session)
{
if($this->pic_url == $session->get('pic_url')) {
return $this->pic_url;
} else {
return 'test failed';
}
}
}
$user = new User($session);
//this works
echo $user->pic_url;
//this one does not work
echo $user->test();
试试这个:
<?php
//user.class.php file
class User
{
public $pic_url;
public function __construct($session)
{
if($session->get('auto_id') != ''){
$this->pic_url = $session->get('pic_url');
} else {
return false;
}
}
public function test($session)
{
if($this->pic_url == $session->get('pic_url')) {
return $this->pic_url;
} else {
return 'test failed';
}
}
}
$user = new User($session);
//this works
echo $user->pic_url;
//this one does not work
echo $user->test();
//这个不行
$user->test()
在此处调用不带参数的函数会引发警告
Warning: Missing argument 1 for test(), called in ....
而且,因为您试图访问该对象的函数,而该函数没有传入test()调用,所以它也会抛出一个致命错误
只需将$session参数也传递给test()
或者您可以试试..
class User
{
public $pic_url;
private $class_session;
public function __construct($session)
{
$this->class_session = $session;
... other code
}
function test()
{
return $this->pic_url = $this->class_session->get('pic_url');
}
}
$user = new user($session);
echo $user->pic_url;
echo $user->test();
//这个不行
$user->test()
在此处调用不带参数的函数会引发警告
Warning: Missing argument 1 for test(), called in ....
而且,因为您试图访问该对象的函数,而该函数没有传入test()调用,所以它也会抛出一个致命错误
只需将$session参数也传递给test()
或者您可以试试..
class User
{
public $pic_url;
private $class_session;
public function __construct($session)
{
$this->class_session = $session;
... other code
}
function test()
{
return $this->pic_url = $this->class_session->get('pic_url');
}
}
$user = new user($session);
echo $user->pic_url;
echo $user->test();
他是对的,但我想我应该再解释一下错误信息。它表示您正在“非对象”上调用get
——因此,$session
是非对象。由此可以推断,$session
设置不正确。他是对的,但我想我应该进一步解释一下错误消息。它表示您正在“非对象”上调用get
——因此,$session
是非对象。从这里你可以推断出<代码> $session 没有被正确地设置。不要亲自考虑这个问题,但是在关于Session +类的12345个问题之后,你应该考虑得到一些“动手”的专家意见,辅导,或者几个额外的时间学习PHP+OOP的来龙去脉…再说一次,这只是我谦虚的建议为什么你要从构造函数返回一个值?@Yacoby:的确-在我的屏幕前放一个咖啡杯让我错过了8)+1$user->test()
-你没有在这里传递$session对象。请解释这个方法应该做什么。@jcinacio,你的评论一点帮助都没有,实际上这正是我在这里发布的问题,2)这与会话无关,这是一个虚构的示例代码,你知道吗“示例”)学习和理解这个概念,但碰巧这个示例不起作用,我所阅读和实践的内容也不会使这个概念发挥作用,因此,我非常感谢您的“谦逊建议”,但同时也不感谢您,请不要将此视为个人问题,但是在关于Session +类的12345个问题之后,你应该考虑得到一些“动手”的专家意见,辅导,或者几个额外的时间学习PHP+OOP的来龙去脉……再说一次,这只是我谦虚的建议为什么你要从构造函数返回一个值?@Yacoby:的确-在我的屏幕前放一个咖啡杯让我错过了8)+1$user->test()
-你没有在这里传递$session对象。请解释这个方法应该做什么。@jcinacio,你的评论一点帮助都没有,实际上这正是我在这里发布的问题,2)这与会话无关,这是一个虚构的示例代码,你知道吗“示例”)来学习和理解这个概念,但碰巧这个示例不起作用,我所阅读和实践的内容也不会使这个概念发挥作用,因此我非常感谢“谦虚的建议”,但同时也不感谢