OOP __ sınıf olarak zaman onun aynı adı oluşturmak gibi davranan functionName

4 Cevap php

Biraz uzun başlık, bu aşağı gelir:

<?php

    class error
    {

        public function error($errormsg = false, $line = false)
        {

            echo 'errormsg: '.$errormsg.' on line: '.$line;

        }

    }

?>

I ile örneğin, başka bir dosyada bu sınıf çağırdığınızda:

<?php

    $error = new error;

?>

Zaten işlevi 'hata' olarak yankı yürütür. Işlev olarak aynı davranışı miras mı __ inşa zaman onun aynı adı veya ben sadece (:) bir acemi OOPer im) gerçekten aptalca bir şey kaçırdım

Önceden Tnx

4 Cevap

Bu:

   class error
    {

        public function error($errormsg = false, $line = false)
        {

            echo 'errormsg: '.$errormsg.' on line: '.$line;

        }

    }

, bunu yapmanın php4 yoludur düşünün:

   class error
    {

        public function __construct($errormsg = false, $line = false)
        {

            echo 'errormsg: '.$errormsg.' on line: '.$line;

        }

    }

Her ikisi de aynı, ilkini olan php4 yol sonra ise php5 şekilde yapmak.

Evet o __construct() olarak aynı davranışı

Bu, diğer dillerde birçok diğer OOP uygulamaları aynı adı kullanan olmasından kaynaklanmaktadır. Böylece PHP bu takip ve böylece bu şekilde yapar.

Bu __construct() fonksiyonu olarak aynı.

PHP kılavuzuna bakınız:

For backwards compatibility, if PHP 5 cannot find a __construct() function for a given class, it will search for the old-style constructor function, by the name of the class. Effectively, it means that the only case that would have compatibility issues is if the class had a method named __construct() which was used for different semantics.

Her iki fonksiyonları bildirirseniz __construct() PHP5'ta denir ve error() PHP4'te denir

PHP4, yapıcı sınıf olarak aynı adı vardı. Ben bir __construct fonksiyonunu tanımlamak, eğer çağrılan olmaktan PHP4 stil kurucu önlemek gerektiğine inanıyoruz. Bu davranış, constructors PHP kılavuzu sayfada belgelenmiş ve PHP için kaynak düzenleme ve yeniden kısa çağrılan PHP4 tarzı Kurucular, önlemenin tek yoludur.

Başka bir çözüm yöntemi adlandırmak etmektir. error::error bana biraz tuhaf görünüyor. Daha uygun görünüyor error::log veya error:report gibi bir şey düşünün.