Nasıl TRUE dönmek | PHP sınıfından YANLIŞ

6 Cevap php

Sınıf başka bir yerde dahil edildiğinde benim php programı doğru DOĞRU YANLIŞ değerini döndürüyor değil neden ben merak ediyorum

böyle bir şey gider

source: signup.php

class signup
{
    function buildProfile()
    {
        if($logic){
            $this->success = TRUE;
        }else{
           $this->success = FALSE;
        }
    }
    function __construct()
    {
        $this->success = NULL;
        $this->buildProfile
        return $this->success;
    }
}

ve başka bir yerde yapmam

include('signup.php');

$signup = new signup();

if($signup){
    successFunction();
}else....

ama bu doğru $ kayıt == almak değil, her zaman YANLIŞ oluyor

6 Cevap

Kurucular always return a new instance of the class. Sen kurucusundan değerin başka tür iade edemez. Kodunuzu yapılandırırken daha iyi bir yolu gibi bir şey olurdu:

source: signup.php

class Signup
{
    public $success;
    protected function buildProfile()
    {
        if($logic){
            $this->success = true;
        }else{
            $this->success = false;
        }
    }
    public function __construct()
    {
        $this->success = null;
        $this->buildProfile();
    }
}

Sonra yapabileceğin nesneyi oluşturmak zaman:

include('signup.php');

$signup = new Signup();

if($signup->success){
    successFunction();
}else....

Burada ile:

$signup = new signup();

Bunu yapıcısı aracılığıyla, sınıfın bir örneğini yaratıyor.

Bir yapıcı normal bir işlev değil: Ben aslında hiçbir şey "geri" olabilir sanmıyorum: onun instanciation üzerine nesnesine bazı verileri başlatması sadece burada.

Bunun üzerine, $signup değişken bir nesnedir; Sınıfın bir örneği {[(1)];} sizin kurucusuna yazacağım ne dönüş talimat değeri başka türlü, değil.

Alıntı wikipedia's Constructor page:

A constructor is similar to an instance method, but it differs from a method in that it never has an explicit return type, it is not inherited, and usually has different rules for scope modifiers.

Bu arada, bu gibi şeyler yazmayın:

if($logic) {
    $this->success = true;
}else{
    $this->success = false;
}

Bu gibi şeyler yazmak:

$this->success = $logic;

Sen bir kurucu bir değer döndüremez.

Müteahhit tek amacı bir nesneyi başlatmak için olduğunu. Sizin örnekte, $ kaydolma bu kurucusundan bir "dönüş değeri" değil, senin nesnedir.

"Varsayılan functor", 5.3 kadar PHP mevcut olmayan bir özellik, örneğin taklit çalışıyorsunuz bir işlev sanki (yukarıda söylediğim gibi her zaman örneklerini nesne döndürür'' Yeni, ``) bir nesne değerlendirmek için çalışıyoruz. Nesneler işlevleri değildir, bu yüzden varsayılan funktor kendi nesne bir fonksiyon olarak çağrıldığında automagically idam olur bir örnek yöntemidir.

Her iki durumda da, doğru çözüm en iyi cevap olduğunu.

Belki statik bir yöntem daha uygun olurdu?

http://php.net/manual/en/language.oop5.static.php

include('signup.php');

if(Signup::buildProfile()){
    successFunction();
}else....