【问题标题】:Object Oriented Programming -> Operator [duplicate]面向对象编程->运算符[重复]
【发布时间】:2012-09-09 00:23:22
【问题描述】:

可能重复:
Reference - What does this symbol mean in PHP?

所以我一直在阅读 David Powers 的PHP 解决方案,轻松实现动态网页设计一书。我通读了关于面向对象的 PHP 的简短部分,我很难理解 -> 运算符的概念。任何人都可以尝试给我一个关于 OOP PHP 中的 -> 运算符的可靠解释吗?

例子:

$westcost = new DateTimeZone('America/Los_Angeles');
$now->setTimezone($westcoast);

还有一个更一般的例子:

$someObject->propertyName

【问题讨论】:

  • 它只是引用对象的方法或属性。其他语言对此运算符使用点。 PHP 不能,因为他们使用点作为字符串连接,因此使用 ->
  • @Spudley:只是因为它对你来说很简单,对其他人来说可能并不那么明确:)
  • 哦,所以相当于java中的'System.out.println("hello");'
  • @oman9589 没错。在 PHP 中,应该是 $system->out->println("hello")(如果我们假设 $system 是一个对象,而 $system->out 也是一个对象)

标签: php oop


【解决方案1】:

类和对象 101:

一个类是这样定义的:

class MyClass {

   public $value1;

   public function getValue() {

       return $this->value;

   }

}

我们现在定义了一个具有单个属性和单个函数的类。要使用这些,我们需要创建此对象的“实例”:

$myObject = new MyClass();

要使用属性或函数,我们使用-> 运算符:

echo $myObject->value1;
echo $myObject->getValue();

稍微抽象一点..函数getValue在这个对象中定义。通过在我们类的实例上使用-> 运算符,PHP 所做的实际上只是调用该函数,就像任何其他函数一样。但在它被调用之前,$this 被分配给当前对象。

如果没有,希望这会有所帮助。我只是推荐阅读有关 OOP 基础知识的内容。

【讨论】:

  • 并不是说$this->value 永远不会返回任何东西,除了一个错误,因为它没有在任何地方定义。不过,这可能只是一个错字。 :)
【解决方案2】:

PHP 中的-> 运算符指代函数或类中的变量。

<?php
    class Example {
        public $variableInClass = "stringContent";
        public function functionInClass() {
            return "functionReturn";
        }
    }

    $example = new Example();
    var_dump($example->variableInClass); //stringContent
    var_dump($example->functionInClass()); //functionReturn
?>

请注意,如果我们谈论的是静态类(不同用途),请改用 ::

<?php
    class Example {
        public static $variableInClass = "stringContent";
        public static function functionInClass() {
            return "functionReturn";
        }
    }

    var_dump($example::$variableInClass); //stringContent
    var_dump($example::functionInClass()); //functionReturn
?>

【讨论】:

  • 谢谢,帮了大忙
【解决方案3】:

$someObject-&gt;propertyName 可以读作:

返回值存储在 propertyName from object $someObject

$someObject-&gt;methodName() 可以读作:

执行方法名来自对象$someObject

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多