PHP 5.3.3 déclaration d'un objet

PHP 5.3.3 déclaration d'un objet - PHP - Programmation

Marsh Posté le 28-08-2010 à 14:33:04    

Bonjour à tous,
 
J'ai un petit problème de compréhension avec php 5.3.3. Pourquoi désormais j'ai cette erreur:
 
Strict Standards: Creating default object from empty value in

 en déclarant un objet de cette façon
 

Code :
  1. $test->test = 'ok';


 
Comment déclarer un objet alors ?
Ca date peut être d'une version antérieure à 5.3.3, j'étais en 5.1 avant.
 
Merci de votre aide  :jap:

Reply

Marsh Posté le 28-08-2010 à 14:33:04   

Reply

Marsh Posté le 28-08-2010 à 15:01:42    

tu défini explicitement ta classe:

Code :
  1. // dans Bidule.php
  2. class Bidule{
  3.    protected $truc;  //accessible de l'interieur de cette classe et dans les classes filles ( qui héritent)
  4.    private $machin; // non accessible hors de cette classe
  5.    public $test;  //accessible directement de l'exterieur
  6.  
  7.  
  8. }
  9. //dnas ton code :
  10. $bidule  = new Bidule();
  11. $bidule->test = 'ok';


Message édité par flo850 le 28-08-2010 à 15:03:42
Reply

Marsh Posté le 29-08-2010 à 11:03:53    

Code :
  1. class system
  2. {
  3. // DECLARATION DES PROPRIETES
  4. public $system;
  5. // $system->page       // Toutes les infos concernant la page en cours
  6. // $system->html       // Contient toutes les balises html
  7. // $system->bdd        // Travail avec la base de données
  8. // $system->user       // Toutes les infos de l'utilisateur
  9. public $id_page;       // La page appelée à l'origine
  10. public $erreur_fatale; // Si à True, l'utilisateur est redirigé vers une page simple, lui indiquant une erreur.
  11. public $langue;        // Langue de la page en cours
  12. // CONSTRUCTEUR
  13. public function __construct ()
  14. {
  15.  // INCLUSION DES FICHIERS
  16.  require_once ('config.conf.php');                 // Fichier config
  17.  require_once (DOSSIER_OUTILS.'fonctions.inc.php');// Ensemble de fonctions utiles
  18.  require_once (DOSSIER_OUTILS.'bdd.class.php');    // Class de la base de données
  19.  // INITIALISATION DES VARIABLES
  20.  $this->erreur_fatale = false;
  21.  $this->system->bdd = new bdd();
  22. }
  23. }


 
Voilà le bout de code sur lequel j'étais en train de bosser.
A l'appel de cette class, j'ai donc cette erreur sur: $this->system->bdd = new bdd(); Car $this->system est vide, et ça je ne trouve pas le moyen de le contourner.


Message édité par Scarf3ss3 le 29-08-2010 à 11:04:45
Reply

Marsh Posté le 29-08-2010 à 19:22:05    

mais system est de quel classe ?
tu ne devrai pas faire
$this->system = new System();

 

au passage, fait tes inclusion au debut de ton fichier, là , elles sont faite a chaque instantiation d'un objet

 


edit : Attends, ta class system contient un membre appelé system ?
pourquoi ne pas directement avoir les membres bdd, page, html et user ?

Message cité 1 fois
Message édité par flo850 le 29-08-2010 à 19:23:09
Reply

Marsh Posté le 31-08-2010 à 14:09:49    

flo850 a écrit :


edit : Attends, ta class system contient un membre appelé system ?  
pourquoi ne pas directement avoir les membres bdd, page, html et user ?


 
Oui $system est une propriété de la class system. J'aurai pu l'appeler $toto ou $tata.
Le but de la manip est de mettre tout dans la variable $system pour faire passer tout le nécessaire de class en class en une seule variable.
 
Donc je cherche comment remédier ou plutôt déclarer ma variable $system afin que je lui attribue les différents objets.
 
Il n'y a pas de problèmes de fonctionnements, si ce n'est que j'ai ce NOTICE que j'aimerai bien comprendre pour le régler

Message cité 1 fois
Message édité par Scarf3ss3 le 31-08-2010 à 14:12:18
Reply

Marsh Posté le 31-08-2010 à 18:33:55    

Code :
  1. // INITIALISATION DES VARIABLES
  2. $this->erreur_fatale = false;
  3. $this->system = new stdClass();
  4. $this->system->bdd = new bdd();


(J'ai pas testé, flemme, c'est juste une idée ^^)

Reply

Marsh Posté le 31-08-2010 à 20:54:04    

Scarf3ss3 a écrit :


 
Oui $system est une propriété de la class system. J'aurai pu l'appeler $toto ou $tata.
Le but de la manip est de mettre tout dans la variable $system pour faire passer tout le nécessaire de class en class en une seule variable.
 
Donc je cherche comment remédier ou plutôt déclarer ma variable $system afin que je lui attribue les différents objets.
 
Il n'y a pas de problèmes de fonctionnements, si ce n'est que j'ai ce NOTICE que j'aimerai bien comprendre pour le régler


crée une classe" system" avec les bons membres
ce sera beaucoup plus propre

Reply

Marsh Posté le 05-09-2010 à 21:43:39    

C'est clair que les require_once dans le constructeur, ça pue du boudin !


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 05-09-2010 à 23:21:27    

flo850 a écrit :


crée une classe" system" avec les bons membres
ce sera beaucoup plus propre


 
+1!
Et penser que PHP laisse faire autrement  :sarcastic:  
Donc soit tu te fais une classe System qu'après tu construits (propre et objet), soit tu te gères système comme un tableau associatif, mais de grâce, pas un mix des 2!


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed