PHP Class bir String dönmeyecek

3 Cevap php

Ben öğreniyorum gibi ben küçük bir sorun var PHP için oldukça yeni kulüpler:

Ben DataStrip.php adında bir sınıf inşa

<?php

final class DataStrip
{
	public function DataStrip()
	{
		// constructor	
	}

	public function stripVars($vars)
	{

		return $vars;
	}
}
?>

ve sonra ben kamu görevi geçmek için çalışıyorum bir değer stripVars:

<?php

    include_once ('lib/php/com/DataStrip.php');

    echo($projCat);
    $a = new DataStrip;
    $a->stripVars($projCat);
    echo($a);

?>

Ancak, ben bu hatayı geri almak:

Yakalanabilir ölümcül hata (!): Sınıf Datastrip Nesne dizeye dönüştürülemedi myfilepath

Belki de ... Ben burada yanlış yapıyor olabilir ne herhangi bir tavsiye? Ben OOP PHP alışmaya çalışıyorum gibi şu anda bu sadece bir test fonksiyonu olduğunu. :)

3 Cevap

Bunu gerçekleştirmek için ne bekliyorsunuz? Sen stripVars bir değişken döndürür ne sonucu tasarruf değil:

$result = $a->stripVars($projCat);
print $result;

Ne yapmaya çalışıyorsun nesne değişkeni kendisi yazdırmak olduğunu. Eğer bir nesneyi yazdırmaya çalıştığınızda ne olur kontrol etmek istiyorsanız, __toString yöntemi tanımlamanız gerekir.

Bunu yapmak istiyorsanız ... Eğer yöntemi declarate ihtiyaç __ toString ()

    <?php

    final class DataStrip
    {
    private $vars;

            public function DataStrip()
            {
                    // constructor  
            }

            public function stripVars($vars)
            {

                    $this->vars = $vars;
            }

            public function __toString() {

             return (string) $this->vars;
            }


    }

// then you can do

 $a = new DataStrip;
    $a->stripVars($projCat);
    echo($a);

    ?>

Bir değişkene dönmemesi:

$projCat = $a->stripVars($projCat);

Eğer echo $a Eğer nesneyi yankılanan konum - değil bunun içinde herhangi bir fonksiyon veya değişken (beri $a Eğer sınıfta her şey olarak ilan ediyoruz ilan zaman - değişkenler, fonksiyonlar , Bütün kiti ve kaboodle.

Ben yanlışım varsa ben de php oop ile ilgili sorunlar var, bu yüzden lütfen düzeltin :)