Nesne aynı sınıf içinde örneği ise özel işlevler halka denebilecek

3 Cevap php
<?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();
?>

Yukarıdaki kod çıktısı:

"static called
 private called"

Neden $ y> PrivateBar (); Bir hata atmak değil? Bu sonuçta özel bir fonksiyondur.

Bunun arkasındaki nesne yönelimli tasarım mantığı nedir? Bu PHP özgü, yoksa bu standart OOP nedir?

3 Cevap

StaticFoo, statik olsa da, hala Numune sınıfının bir parçası olarak kabul edilir çünkü.

Bu C # da tekrarlanabilir olduğunu:

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();
    }
}

Çıkışı ile:

static called

private called

Why does $y->PrivateBar(); not throw an error? It is a private function after all.

Özel fonksiyonu sınıf içinde bunları kullandığınızda sınıfın yan erişildiğinde, onlar hata atmak bir hata atmayın.

What is the object oriented design logic behind this? Is this unique to PHP, or is this standard OOP?

PHP özgü değildir ve standart OOP olduğunu.

Hatasını atmak değil Böylece aslında, sınıfta ile özel yöntemi çağırıyor.

Eğer sınıfın dışında aynı şeyi yaparsanız, o hatayı atmak olacaktır.