Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Opzet configuratie (PHP/OOP)

WMP
3 antwoorden
  • Ik ben net begonnen met OOP en ben nu bezig een applicatie hiermee te bouwen. Nou heb ik in alle tutorials niet echt iets kunnen vinden voor het volgende.

    Ik wil een configuratie class maken. Met daarin natuurlijk wat dingen die ingesteld worden. Echter als ik dan een class heb die gebruik wilt maken van de config. Moet die dan altijd extend worden? Vaak maakt deze dan ook gebruik van de database class (die de connect gegevens uit de configclass haalt).

    Denk bijvoorbeeld aan een login class. Deze maakt gebruik van enkele config gegevens, maar natuurlijk ook van de database. Moet dit dan via een extend allebei toegevoegd worden? Los werken de classes wel, nu zou ik dit dus graag samen willen voegen.

    Bedankt voor de hulp!
  • Dat je een database-klasse maakt snap ik, dat levert een hoop voordelen op. Maar wat is het idee achter de configuratie-klasse? Als het puur een verzameling instellingen is dan zijn er waarschijnlijk betere methoden om die op te slaan en aan te roepen.

    Overigens kan je altijd vanuit de ene klasse een andere aanroepen (iig wel in PHP) en om eerlijk te zijn is je probleem me dan ook niet helemaal duidelijk. Kan je het iets toelichten?

    - Bas
  • Bedankt voor de reactie. Ik heb een opzetje gemaakt, maar het is niet helemaal gelukt. Ik heb er toch voor gekozen om de config class weg te laten en hiervoor in de plaats een file met Defines aan te maken.

    Dit is wat ik gedaan heb:
    [code:1:84ea5ff0ad]
    <?php
    class Database
    {
    private static $_instance = null;

    public static function getInstance()
    {
    if (is_null (self::$_instance))
    {
    self::$_instance = new Database();
    }
    return self::$_instance;
    }
    private $MySql;
    function __construct(){
    $this->MySql = $MySql;
    }
    public function DbConnect(){
    $this->MySql['host'] = HOST; // de host van de mysql server
    $this->MySql['username'] = USERNAME; // de gebruikersnaam van de mysql server
    $this->MySql['password'] = PASSWORD; // het wachtwoord van de mysql server
    $this->MySql['database'] = DATABASE; // de database
    // hieronder niks wijzigen
    if(!empty($this->MySql['host']) && !empty($this->MySql['username']) &&!empty($this->MySql['database']))
    {
    mysql_connect($this->MySql['host'], $this->MySql['username'], $this->MySql['password']);
    mysql_select_db($this->MySql['database']);
    }
    else
    {
    echo '<font face="verdana" style="font-size: 11px;">Het configuratiebestand is niet goed ingevuld!</font>';
    exit;
    }
    }

    }
    ?>
    [/code:1:84ea5ff0ad]
    Vervolgens wilde ik dit in een class gebruiken. In de construct heb ik toen gezet:
    [code:1:84ea5ff0ad]
    $this->$Db = Database::getInstance();
    [/code:1:84ea5ff0ad]
    In een functie wilde ik vervolgens de database aanroepen:

    [code:1:84ea5ff0ad]
    <?php $this->DB->DbConnect(); ?>
    [/code:1:84ea5ff0ad]
    Dit gaf toen de error:

    Fatal error: Cannot access empty property in /var/accounts/CN20051076/dev/classes/class.login.php on line 35

    Waar maak ik de fout?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.