Autor Zpráva
PHP_Nemaster
Profil
Dobrý den, řeším jeden problém a nevím co s tím: jak uchovat hodnoty v poli nastavené v jiném souboru?
Mám hlavní třídu ( Core ) v samostatném souboru a v ní prázdné pole s nastaveními, která pak nastavuji v konfiguračním souboru.
Třídu core dědí jiné třídy, které mají samostatné soubory. Problém je však ten, že když includuji konfiguraci a dědící třídu do nějakého souboru a pak vytvořím instanci té třídy, tak nevidí ty hodnoty nastavené v konfiguraci, ale bere ty prázdné hodnoty z Core.
Nevím, jestli je to dobře pochopitelné, dále je příklad:

V core.php mám prázdné pole s hodnotami nastavení

public $settings = array(
                  "articles_per_page" => '',
                  "comments_per_page" => '' );

Tu třídu pak includuji do souboru config.php, ve kterém nastavuji hodnoty.

Config.php:
include "core.php";

$core = new Core();
$core->settings['articles_per_page'] = 5;
$core->settings['comments_per_page'] = 30;

Když pak v tom souboru vypíšu hodnoty pole settings, mají tu hodnotu, kterou jsem nastavil.

V samostatném souboru pak mám např. třídu Article, která dědí Core.

class Article extends Core {}

A pak mám nějaký soubor využívající třídu article, ve kterém chci zobrazit hodnoty nastavení. Z nějakého důvodu však program ignoruje to, že už jsem nastavil hodnoty v config.php a zobrazí prázdné hodnoty jako v Core.

include "config.php";
include "article.php";

$ar = new Article();
echo $ar->settings['comments_per_page']; // vypíše prázdnou hodnotu

Nevíte, jak udělat, aby se braly hodnoty nastavené v config.php a ne přímo z hlavní třídy?
Předem děkuji za odpověd'
Seith
Profil
Soubor core.php:
class Core
{
    public static $settings = array(
        "articles_per_page" => '',
        "comments_per_page" => ''
    );
}

Soubor config.php:
include "core.php";
Core::$settings["articles_per_page"] = 5;

Soubor article.php:
class Article extends Core
{
    public function test() {
        echo($this::$settings['articles_per_page']);
    }
}

Užití:
include "config.php";
include "article.php";

$article = new Article();
$article->test();
PHP_Nemaster
Profil
Děkuji.

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: