我刚刚开始使用David Powers 的面向PHP面向对象解决方案的OOP PHP ,并且对OOP中的保护概念有点好奇.
作者清楚地解释了保护是如何起作用的,但是关于不希望其他人能够改变属性的一点点有点平淡.我很难想象有可能阻止其他人改变你的课程,因为他们可以打开你的class.php手动调整任何他们喜欢看到的PHP如何总是用纯文本.
注意:以上所有内容均由初学者编写,初学者对编程有所了解.
dec*_*eze 17
从你自己!
您可以使用各种级别的保护来指示您希望如何使用类.如果类成员是protected或private,则只能由类本身访问.您无法从"外部"代码(类外的代码)中意外地搞砸该成员的价值.
假设您有一个只应包含数字的类成员.你创建它protected并添加一个setter来检查它的值只能是数字:
class Foo {
protected $num = 0;
public function setNum($num) {
if (!is_int($num)) {
throw new Exception('Not a number!!!');
}
$this->num = $num;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以确定Foo::$num在您想要使用它时将始终包含一个数字.只要您想使用它,就可以跳过很多额外的错误检查代码.任何时候你尝试为它分配除数字之外的任何东西,你会得到一个非常响亮的错误信息,这使得很容易找到错误.
这是对你自己的限制,以减轻你自己的工作.因为程序员会犯错误.特别是像PHP这样的动态类型语言让你在没有注意到的情况下默默地犯了很多错误,这会导致很难调试,以后会出现非常严重的错误.
就其本质而言,软件非常柔软,很容易降级为无法维护的Rube Goldberg逻辑机器.OOP,封装,可见性修饰符,类型提示等是PHP使您能够使代码"更难"的工具,表达您对代码的某些部分的意图,并使PHP能够为您强制执行此意图.