类不打印变量

时间:2014-03-17 08:36:41

标签: php

我试图理解对象&类。但我遇到了问题。我试图将一个变量从一个类传递到另一个类。

为什么我这样做主要是因为我想了解更多类如何工作,以及将来我需要将数据库连接发送到类中。

以下是针对该问题简化的代码:

class databaseConnection
{
    public function connect(){

        return "localhost";

    }
}

class like
{

    private $database;

    public function __construct(){

        $this->database = databaseConnection::connect();

    }

    public function addLike()
    {
        return $database;
    }
}

$obj = new like;
echo $obj->addLike();

但这并没有显示任何内容。我认为结果是echo "localhost";

为什么这不起作用?

5 个答案:

答案 0 :(得分:1)

您正在调用databaseConnection::connect()作为静态方法。将其修改为:

public static function connect(){ }

编辑 - 正如@Shankar Damodaran指出的那样,还补充道:

public function addLike()
{
    return $this->database;
}

答案 1 :(得分:1)

connect不是静态方法,您应该将其更改为静态或创建实例。

// if you use databaseConnection::connect();
public static function connect(){

$db = new databaseConnection;
$this->database = $db->connect();

你还需要改变

public function addLike()
{ 
    // use $this to access object property
    return $this->database;
}

答案 2 :(得分:1)

首先,您应该遵循约定并开始命名类StartingWithCapitalLetter。

其次,“::”运算符用于调用静态方法(简单地说 - 你不必创建类的对象来调用它们,如果它们是公共的)。

通常,要调用object的方法,请使用运算符“ - >”,如$ object-> method(arguments); 因此,在您的情况下,您需要首先创建databaseConnection类的对象(因为您无法在未初始化的方法上调用方法)然后在其上调用“connect”,如下所示:

$connection = new databaseConnection();
$database = $connection->connect();

要传递参数,您需要修改方法声明

public function connect($parameter){
    return "Connecting to " ... $parameter;
}

并用

调用它
$database = $connection->connect($parameter);

在旁注中,在创建类的对象时应该使用括号,例如:

$obj = new like();
echo $obj->addLike();

另外,正如deceze指出的那样,你需要使用$ this访问类变量而不是访问本地方法变量:

public function addLike()
{
    return $this->database;
}

答案 3 :(得分:0)

public function addLike()
{
    return $this->database;
}

答案 4 :(得分:0)

$database$this->database是两个不同的变量。 $database是一个本地函数变量,它不存在,它不是您之前设置的对象属性。