我正在学习OO的东西,并且遇到了这个:
class n{
private function f($v){
return $v*7;
}
function c(){
return $this->f(5);
}
}
$o = new n;
echo $o->c(); //returns 35
Run Code Online (Sandbox Code Playgroud)
private如果我仍然可以从课外访问它,那是否超出了声明函数的目的?这不应该被完全阻止吗?我错过了什么吗?请帮忙清理.谢谢
公共函数用于对该类的实例执行操作.说,Save().
内部工作对Save()呼叫者来说并不有趣; 他只是想保存它而不关心这是怎么回事.
作为一种风格问题,您可能或可能不想在该方法中实际执行保存.它可能取决于设计选择或对象的属性.看到:
class FooObject
{
private $_source;
public function Save()
{
if ($this->_source == "textfile")
{
$this->saveToTextfile();
}
elseif ($this->_source == "database")
{
$this->saveToDatabase();
}
}
private function saveToTextfile()
{
// Magic
}
private function saveToDatabase()
{
// Magic
}
}
Run Code Online (Sandbox Code Playgroud)
您不希望任何人直接调用私有方法,因为它们仅供内部使用.但是,公共方法可以间接调用私有方法.