Protože je na tento rok ohlášená PHP verze 7 a kromě jiných změn v sobě obsahuje zavržení konstruktoru třídy v PHP 4. Z tohoto důvodu budou všechny třídy ve WordPressu 4.3 a výše, používat konstruktory zavedené od PHP 5.
O co přesně jde.
V PHP 4 jste zavolali kontruktor třídy pomocí funkce, jenž měla stejný název, jako samotná třída.
class MyClass { function myclass(){ // Kód konstruktoru } } |
Od verze PHP 5 se konstruktor vyvolal pomocí funkce __construct
class MyClass { function __construct(){ // Kód konstruktoru } } |
A protože od sedmičkové verze bude podpora čtyřkový konstruktorů zrušena, všechny třídy jádra WordPressu budou používat pětkový konstruktor.
V rámci až fanatickém lpění na zpětné kompatibilitě, zůstanou ve třídách pohrobci, umožňující využít konstruktor z PHP 4.
class MyClass { function __construct(){ // Kód konstruktoru } function myclass(){ self::__construct(); } } |
Co to znamená pro nás? V podstatě jen to, že pokud používáte nějakou třídu, která volá čtyřkový konstruktor rodičovské třídy, typicky widget třídy, Měli by jste jej volat jako parent::__contructor().
Dobrý den,
wordpress mi pořád v logu zobrazuje: Deprecated: Volaná metoda konstruktoru třídy pro WP_Widget v Recent_Post je zastaralá od verze 4.3.0! Místo toho použijte __construct(). in /mnt/data/accounts/j/jphsw/data/www/test/wp-includes/functions.php on line 5546
(asi 10x, v Recent_post, Popular_Post, Contact, flick, Twitter…atd.)
Ve functions.php na řádku 5546 je:
if ( WP_DEBUG && apply_filters( ‚deprecated_constructor_trigger_error‘, true ) ) {
if ( function_exists( ‚__‘ ) ) {
if ( $parent_class ) {
trigger_error(
sprintf(
/* translators: 1: PHP class name, 2: PHP parent class name, 3: Version number, 4: __construct() method. */
__( ‚The called constructor method for %1$s class in %2$s is deprecated since version %3$s! Use %4$s instead.‘ ),
$class_name,
$parent_class,
$version,
‚
__construct()
‚),
řádek 5546==> E_USER_DEPRECATED
);
Přijde mi že toto je pouze obecná funkce upozorňující na zastaralý konstruktor, ale neříká mi to kde přesně hledat a jak odstranit ve WP tuto chybu. Nevíte prosím co s tím? Díky moc
Dobrý den, jsou to ty widgety, které tam jsou psány. Měla by v té chybě být i cesta, kde jsou umístěny. Fungovat to sice může, ale kdo ví, jestli to jde na php 8.