Autor Zpráva
Telník
Profil *
Zdravím.

Na ostrém webu (serveru) kde běží PHP 7.4 mi následující konstrukce kódu běží dle očekávání viz výsledek v textu ukázky.

Ovšem na mém localhostu XAMPP PHP verze 8.1.12 mi zůstává "b" v objectu "prázdné" NULL - proč se tak děje?

class fa
{

    var $b;

    function fa($a)
    {               
         $this->b = $a;
         return $this->b;
    }
} 



$db = new fa("HALLO WORLD");


echo $db->b;
echo "<br>";
echo var_dump($db);


die();

PHP 8.1.12 LOCALHOST:

""
object(fa)#1 (1) { ["b"]=> NULL }

PHP 7.4. WEBSERVER:

HALLO WORLD
object(fa)#1 (1) { ["b"]=> string(11) "HALLO WORLD" }
Keeehi
Profil
Odpověď je jednoduchá. Jako konstruktor použij metodu __construct.
Od verze 7.0 je tvůj způsob označen za zastaralý (vyhazuje Deprecated notice) a od veze 8 je to odstraněno. Proto ti to v ospičce nefunguje.

Mimochodem, var bys taky neměl používat pro definice atributů třídy. Používej vhodné public/private/protected.

Tohle bude asi nějaký hodně starý projekt, co?
Kcko
Profil
var v PHP 5 / 7 / 8 snad už ne.
To se používalo v PHP 4, možná to je tím.
Také místo function použít __construct

Píšeš kód v PHP 4 a chceš, aby korektně fungoval v 7/8 verzi.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0