<?php
//5.2.6
class Sample {
private function PrivateBar() {
echo 'private called<br />';
}
public static function StaticFoo() {
echo 'static called<br />';
$y = new Sample();
$y->PrivateBar();
}
}
Sample::StaticFoo();
?>
上面的代码将输出:
"static called
private called"
为什么$ y-&gt; PrivateBar();不抛出错误?毕竟这是一项私人活动。
这背后的面向对象设计逻辑是什么?这是PHP独有的,还是这个标准的OOP?
答案 0 :(得分:1)
为什么$ y-&gt; PrivateBar();不要扔 一个错误?这是一个私人功能 毕竟。
私有函数在类中使用它们时不会抛出错误,它们会在类的一侧访问时抛出错误。
什么是面向对象的设计 这背后的逻辑?这是独一无二的 PHP,还是这个标准的OOP?
它不是PHP独有的,是标准的OOP。
答案 1 :(得分:1)
因为StaticFoo虽然是静态的,但仍然被认为是Sample类的一部分。
这也可以在C#中重现:
public class Sample
{
private void PrivateBar()
{
Console.WriteLine("private called\r\n");
}
public static void StaticFoo()
{
Console.WriteLine("static called\r\n");
Sample y = new Sample();
y.PrivateBar();
}
}
class Program
{
static void Main(string[] args)
{
Sample.StaticFoo();
Console.Read();
}
}
输出:
static called
private called
答案 2 :(得分:0)
实际上你是在类中调用private方法,所以它不会抛出错误。
如果你在课堂上做同样的事情,它会抛出错误。