gpt4 book ai didi

php:防止创建对象级变量

转载 作者:行者123 更新时间:2023-12-02 01:48:05 25 4
gpt4 key购买 nike

由于拼写错误,我创建了一个新的对象级变量。这很难调试。虽然这可能是一个懒惰的特性,但有没有办法防止对象级变量被赋值创建?我希望 error_reporting 至少会告诉我我做到了,如果不能阻止的话。

<?php

error_reporting(E_STRICT|E_ALL);

class SearchField {
var $field1;
}

$field = new SearchField();
$field->field1 = 'value1';
echo '<p>'.var_dump($field).'</p>';

$field->feild1 = 'value2';
echo '<p>'.var_dump($field).'</p>';

$field = new SearchField();
$field->field1 = 'value1';
echo '<p>'.var_dump($field).'</p>';


?>

这里的错字相当明显。有时它并不那么明显。

object(SearchField)#1 (1) { ["field1"]=> string(6) "value1" }
object(SearchField)#1 (2) { ["field1"]=> string(6) "value1" ["feild1"]=> string(6) "value2" }
object(SearchField)#2 (1) { ["field1"]=> string(6) "value1" }

最佳答案

你可以使用魔法二传手:

public function __set() {
throw new LogicException('Thou shalt not create variables on me');
}

http://www.php.net/manual/en/language.oop5.overloading.php#object.set

虽然我质疑将它添加到所有类中只是为了防御这个可能的错误是多么好的想法。您应该使用 protected 属性和明确的 getter 和 setter 方法,并养成使用 $field->setField('foo') 的习惯,这是更好的 OOP 实践开始于。

关于php:防止创建对象级变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com