php temel sınıf

5 Cevap php
<?php
class myClass {
 var $input;
 var $output;

 function myClass($input) {
  $output = 'You entered: ' . $input;
  return $output;
 }
}

$test = new myClass;
echo $test->myClass(123);

?>

Bu çalışır, ancak bu uyarıyı verir:

Warning: Missing argument 1 for myClass::myClass()

Ben bu okumak ve yapıcı yüzden ekleyerek, bir değer bekliyor gibi görünüyor:

function myClass($input='')

uyarısı kaldırıldı, ama bu kadar gereksiz görünüyor?

Birisi bu uyarıyı önlemek için bir değeri tanımlamak için gerekli olduğunu neden olarak beni aydınlatmak olabilir?

herhangi bir işaretçiler için teşekkürler

5 Cevap

Sen sınıf olarak aynı adı olduğunu (nesnelerin işlevleri yöntemler denir) bir yöntem kullanıyor. Yani OOP'deki özel bir anlamı vardır, yapıcı denir.

Yapıcısı ayrı ayrı çağrılması, ancak nesneyi başlattığınızda otomatik olarak çağrılır yöntemdir asla. Yöntem olan herhangi parametreleri, new classname tablosuna eklenecek.

$test = new myClass(123);

Ayrıca, yapıcı bir değer asla geri gerekir. Sınıf, örneğin başlatılırken iken şeyleri yapmak için kullanılır, tek parametrelerin depolanması. Herhangi bir verilen değerler new myClass always başlatıldı amacı, bir sonucu olarak kaybolur.

Sadece bazı metin dönmek için sınıf içinde bir yöntem oluşturmak için arıyorsanız, o zaman yöntemin adını değiştirmek gerekir. Bu işe:

<?php
class myClass {
 var $input;
 var $output;

 function someOtherFunctionName($input) {
  $output = 'You entered: ' . $input;
  return $output;
 }
}

$test = new myClass;
echo $test->someOtherFunctionName(123);

?>

Bir yapıcı kullanmak istediğiniz gerçekten ne ise, o PHP 5'ten beri, o __construct() yerine sınıf olarak aynı adla bir yöntem oluşturarak kullanımı standart bir uygulama olduğunu unutmayın:

<?php
class myClass {
 var $input;
 var $output;

 function __construct($input) {
  $this->input = $input;  // This is a valid thing to do in a constructor
 }
}

Daha manual PHP 5 yapıcılar ve yıkıcılar üzerinde.

Bu sınıfta myClass yapıcı olduğunu, bu yüzden bu gibi inşaat süresinin bir değişkeni almak gerekiyor çünkü

$test = new myClass(123);

yerine normal bir yöntem gibi işlevi ayarı deneyebilirsiniz

class myClass {
 var $input;
 var $output;
 function myClass(){}
 function setInput($input) {
  $output = 'You entered: ' . $input;
  return $output;
 }
}

$test = new myClass;
echo $test->setInput(123);

Eğer tanımlı fonksiyon, myClass, is sizin yapıcı. Bu PHP5'ta hala geçerli olan eski php4 sözdizimi.

Yani bir nesne oluşturduğunuzda, fonksiyon otomatik olarak çalıştırılır ve nesne örneğini zaman bir değer gönderme değil gibi, bir uyarı olsun.

Kullanmak gerekir Ya:

$test = new myClass(123);

Eğer yapıcı olmak istemiyorsanız ya da farklı şekilde sınıfta fonksiyon adı.

php sizin "myClass" fonksiyonu bir kurucu (adını sınıf adı ile eşleşen çünkü) ve "yeni" sonra otomatik olarak çağırır düşünüyor. Bunu istemiyorsanız, sadece işlevini yeniden adlandırın:

class MyClass {
   function foo($input) { ... }
...
}

$obj = new MyClass;
$obj->foo(bar);

Eğer yöntemler / fonksiyonlar bazı parametreler isteğe olmak istiyorsanız function myClass($input=NULL) yaptığımız gibi bildiriminde varsayılan değerlerini belirtebilirsiniz.

Eğer PHP4 öğrenme ve artık geliştiriciler tarafından desteklenen Ancak, PHP5'ta bakabilirsiniz.