Php nasıl bir fonksiyonları kullanılmak üzere o sınıf için bir değişken geçerdi bir sınıf başlatırken?

7 Cevap php

Yani burada bir anlaşma. Ben bir sınıf aramak ve tüm çeşitli işlevleri EKT o sınıfın içinde kullanılabilir böylece ona bir değer geçmek istiyorum. vb. Bunu nasıl yapıyor hakkında gitmek istiyorsunuz?

Thanks, Sam

7 Cevap

EDIT: diğer cevaplar işaret olarak, gerçekten PHP 5 olarak birleşik Kurucular (__construct()) kullanmalısınız.


Original version of the answer:

Bir constructor ne denir bakın.

class Foo {
    function Foo($init_parameter) {
        $this->some_parameter = $init_parameter;
    }
}

// in code:

$foo = new Foo("some init value");

Eğer "yeni {} nesnesi" kullanımı her PHP'nin yeni sürümleri (5 ve yukarı), function __ oluşturuyoruz denir, böylece nesnesine veri aktarmak isterseniz, yapı fonksiyonu parametreleri eklemek ve sonra arayın

$obj = new Object($some, $parameters);

class Object {
    function __construct($one, $two) {}
}

Adını Kurucular __ construct yöntemi lehine PHP aşamalı ediliyor.

class SomeClass
{
    public $someVar;
    public $otherVar;

    public function __construct()
    {
        $arguments = func_get_args();

        if(!empty($arguments))
            foreach($arguments[0] as $key => $property)
                if(property_exists($this, $key))
                    $this->{$key} = $property;
    }
}

$someClass = new SomeClass(array('someVar' => 'blah', 'otherVar' => 'blahblah'));
print $someClass->someVar;

Bu uzun vadede daha az bakım anlamına gelir.

Geçti değişkenlerin Sipariş (gibi artık yazı varsayılan 'null': birSınıf (null, null, true, false)), artık önemli değil

Yeni bir değişken ekleme daha az güçlük (yapıcı atama yazmak zorunda değilsiniz)

Eğer sınıfın örnekleme baktığınızda ilgili ne değişkenler geçti hemen anlarsınız:

Person(null, null, true, false) 

vs

Person(array('isFat' => true, 'canRunFast' => false)) 

Bu ben de benimkini nasıl

class MyClass {

       public variable;  //just declaring my variables first (becomes 5)
       public variable2; //the constructor will assign values to these(becomes 6)

       function __construct($x, $y) {
            $this->variable  = $x;
            $this->variable2 = $y;
       }

       function add() {
            $sum = $this->variable + $this->variable2
            return $sum;
       }

} //end of MyClass class

Bir örneğini oluşturmak ve sonra işlev eklenti aramak

$myob = new MyClass(5, 6); //pass value to the construct function
echo $myob->add();

11 will be written to the page not a very useful example because you would prefer to pass value to add when you called it but this illustrates the point.

Böyle yapabilirsiniz:

class SomeClass
{
   var $someVar;
   function SomeClass($yourValue)
   {
       $this->someVar = $yourValue;
   }

   function SomeFunction()
   {
       return 2 * $this->someVar;
   }
}

veya PHP5 kurucu yerine birSınıf arasında __ yapı kullanabilirsiniz.

Herkes burada bariz eksik düşünüyorum. Evet, PHP4 yapıcı önerilmiyor, ancak böyle geriye doğru uyumlu olacak şekilde sınıf yazabilirsiniz:

class myClass {

    var $myVar;

    function myClass { // PHP4 constructor, calls PHP5 constructor
        $this->__construct();
    }

    function __construct() { // PHP5 constructor
        doSomeStuff($myVar);
    }
}

Vay ben burada cevapları inanamıyorum! Onlar ancak tüm iş yanlış olur, belirlenen değişkenlerin doğru yolu bir alıcı ve ayarlayıcı tarafından, bu düzgünce değişkeni ayarlamak ve üzerlerinde kontrolleri vb gerçekleştirmek için olanak sağlar. örneğin

class myClass {

    private $myVar;

    public function set_var($var) {  // You can then perform check on the data etc here
       $this->myVar = $var;
    }

    function __construct() { // PHP5 constructor

    }

    public function do_something() {
        echo "blah";
    } 

}

Ne yapmanızı sağlar, örneğin doğru nesne aramak olduğunu

$objNew = new myClass();
$objNew->set_var("Set my variable");
$objNew->do_something();

Bu bunu yapmanın düzenli bir yoldur ve bu belirtilen diğer şekillerde yazılmış çünkü büyük projeler ve bu mutluluk duyacağız komut üzerine, ben kolayca güncellenen olamaz-biraz başkasının komut ile şu anda bu sorunu yaşıyorum sayfa.

Ayrıca nesnenin örneğin bir aptal çağrı dışarı sınıf için değişkenler sınırsız sayıda sağlar

$objNew = new myClass("var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1","var1");

Bu temelde bir işlevi kullanarak daha nettir.