我想创建应该管理我的日志的类。我开始写这堂课。而且我不知道何时使用$ this和简单变量。这是代码。
<?php
class Log{
private $name = "record.log";
public function create($this->name){
$handle = fopen($this->name, "a+");
fclose($handle);
}
}
或者我应该只使用$name
代替$this->name?
答案 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