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
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: sup>
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.
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.