何时使用$ this和简单变量

时间:2017-12-15 12:54:37

标签: php oop

我想创建应该管理我的日志的类。我开始写这堂课。而且我不知道何时使用$ this和简单变量。这是代码。

<?php
    class Log{
        private $name = "record.log";

        public function create($this->name){
            $handle = fopen($this->name, "a+");
            fclose($handle);
        }
    }

或者我应该只使用$name代替$this->name?

1 个答案:

答案 0 :(得分:1)

在OOP中:
$this->name是对象的属性,由对象定义,可在对象内全局访问 $name是在类方法中使用的变量,只能在对象方法(函数)

中本地访问

非常简短:

class myClass{

    private $name = "record.log";

    function myMethod(){
      $name = 'this exists only in the method myMethod()';
      $this->name; // this contains the 'record.log' string
    }

}

从类外部,您无法访问对象中定义的变量$name

您只能访问类中定义的属性$ name,但必须从对象外部使用对象名称调用它:

$obj = new myClass();
$log_file = $obj->name; // this would contain the string 'record.log'

但是,您将object属性定义为private,因此将从对象外部限制直接访问。为了能够访问它,您必须为getter / setter定义一个处理私有属性读/写的方法。

// add to the class methods
public function getName(){
  return $this->name;
}

public function setName($value){
  // do some validation of the value first
  //...
  // then assign the value 
  $this->name = $value; 
}

现在,您可以使用语句从对象外部访问对象属性$ name:

echo $obj->getName();  // prints record.log
$obj->setName('new.log');
echo $obj->getName();  // prints new.log