Php 帮助学习一个类的方法?

Php 帮助学习一个类的方法?,php,class,Php,Class,从下面的演示中,您可能可以看到我正在尝试做的事情,构造方法可以工作,但是测试方法不工作,给出了错误 致命错误:对非对象调用成员函数get() 有人能告诉我怎么做这样的工作吗 <?PHP //user.class.php file class User { public $pic_url; function __construct($session) { if($session->get('auto_id') != ''){

从下面的演示中,您可能可以看到我正在尝试做的事情,构造方法可以工作,但是测试方法不工作,给出了错误 致命错误:对非对象调用成员函数get()

有人能告诉我怎么做这样的工作吗

<?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)这与会话无关,这是一个虚构的示例代码,你知道吗“示例”)来学习和理解这个概念,但碰巧这个示例不起作用,我所阅读和实践的内容也不会使这个概念发挥作用,因此我非常感谢“谦虚的建议”,但同时也不感谢