【问题标题】:Echoing values from class PHP来自 PHP 类的回显值
【发布时间】:2016-07-01 03:05:10
【问题描述】:

我是 PHP 的菜鸟,请帮帮我,为什么它不回显我班级的值?也许在 PHP 中使用类中的值是通过特定的方式进行的(我来自 Java/C#)?

<?php

class GuestBook
{
    private static $numInstances = 0;
    private $var1 = 10;

    function __construct()
    {
        $numInstances++;
    }

    public static function getNumInstances()
    {
        return $numInstances;
    }

    public function getVar1()
    {
        return $var1;
    }
}

$instance1 = new GuestBook();
$instance2 = new GuestBook();

echo(GuestBook::getNumInstances());
echo($instance1->getVar1());

?>

【问题讨论】:

  • 请注意您在类定义代码中没有做的一件事:GuestBook:: getNumInstances()。现在在类本身中,您可以使用 self 引用该类以获取静态属性和方法。
  • 回显语法错误。检查这个w3schools.com/php/func_string_echo.asp。
  • 在java中你可以,但在php中你不能访问像$numInstances这样的类变量
  • 现在您的代码至少尝试更改/返回局部变量,而不是类属性。 (打开错误报告以获取一些错误:)

标签: php oop static echo


【解决方案1】:

将您的班级更改为:

class GuestBook
{
    private static $numInstances = 0;
    private $var1 = 10;

    function __construct()
    {
        static::$numInstances++;
    }

    public static function getNumInstances()
    {
        return static::$numInstances;
    }

    public function getVar1()
    {
        return $this->var1;
    }
}

将输出:

210

希望这会有所帮助。

【讨论】:

  • 抱歉,我的代码出错了:$var1 必须是通常的值,而不是静态的。所以你的代码可以帮助我处理静态值,如何从类中回显非静态值?
  • 非常感谢兄弟)
【解决方案2】:
<?php

class GuestBook
{
    private static $numInstances = 0;
    private static $var1 = 10;

    function __construct()
    {
        static::$numInstances++;
    }

    public static function getNumInstances()
    {
        return GuestBook::$numInstances;
    }

    public function getVar1()
    {
        return GuestBook::var1;
    }
}

$instance1 = new GuestBook();
$instance2 = new GuestBook();

echo(GuestBook::getNumInstances());

?>

你需要使用类名而不是对象名来访问静态变量

你需要使用 -> 用于非静态方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2021-06-25
    • 2012-04-07
    相关资源
    最近更新 更多