我被要求创建一个执行某些操作的类,然后返回一个只读属性的对象。现在我已经创建了类,我已经完成了100%的工作,但是我很困惑当他们说'返回一个只读属性的对象'时。
这是我的php文件的大纲,其中包含类和一些额外的行调用它等等:
class Book(){
protected $self = array();
function __construct{
//do processing and build the array
}
function getAttributes(){
return $this->self; //return the protected array (for reading)
}
}
$book = new Book();
print_r($book->getAttributes());
如何返回对象或其他内容?
答案 0 :(得分:1)
您可能正在寻找关键字final
。最终意味着无法覆盖对象/方法。
受保护意味着对象/方法只能由其所属的类访问。
由于self
是保留关键字,因此您需要更改它以及声明。将$self
和$this->self
重命名为$data
和$this->data
答案 1 :(得分:0)
self
是 PHP保留字。您必须重命名您的变量。
答案 2 :(得分:0)
他们所指的是具有private
或protected
属性的对象,只能由setters
/ getters
访问。如果您只定义getter
方法,则该属性将是只读的。
答案 3 :(得分:0)
类似的东西:
Class Book {
protected $attribute;
protected $another_attribute;
public function get_attribute(){
return $this->attribute;
}
public function get_another_attribute() {
return $this->another_attribute;
}
public method get_this_book() {
return $this;
}
}
现在这是一个很愚蠢的例子,因为Book-> get_this_book()会自行返回。但是,这应该让您了解如何在受保护的属性上设置getter,以便它们是只读的。以及如何重新对象(在这种情况下它会自行返回)。
答案 4 :(得分:0)
只读属性意味着您可以访问它们但不能写它们
class PropertyInaccessible {
//put your code here
protected $_data = array();
public function __get($name) {
if(isset ($this->_data[$name]))
return $this->_data[$name];
}
public function __set($name, $value) {
throw new Exception('Can not set property directly');
}
public function set($name, $value) {
$this->_data[$name] = $value;
}
}