从外部类访问私人功能

Mob*_*Mob 2 php oop private

我正在学习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如果我仍然可以从课外访问它,那是否超出了声明函数的目的?这不应该被完全阻止吗?我错过了什么吗?请帮忙清理.谢谢

Cod*_*ter 7

公共函数用于对该类的实例执行操作.说,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)

您不希望任何人直接调用私有方法,因为它们仅供内部使用.但是,公共方法可以间接调用私有方法.


Kin*_*nch 5

你错过了这一点,你没有private从外面调用方法.你调用一个public方法(缺少可见性修饰符= public从外部),并从那里你调用一个private从方法内部类.