PHP 4 constructor ve WordPressu 4.3

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().

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

2 Comments

  1. T.Aidam

    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

    Odpověď
    1. Musilda

      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.

      Odpověď

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *