2009-08-12 6 views
2

Ce que j'essaie de faire est d'avoir un fichier PHP séparé contenant des paramètres pour le site Web, puis ayant d'autres pages incluent ce fichier et exécuter du code en fonction des paramètres. Cependant, chaque fois que j'utilise global pour référencer ces variables dans une classe, les variables sont vides. Par exemple:Pourquoi les globals sont-ils vides dans une classe lorsque les variables sont incluses?

settings.php:

<?php 
$setting1 = 'on'; 
$setting2 = 'off'; 
?> 

class.php:

<?php 
require_once('./settings.php'); 

class myclass { 
    public function __construct { 
    global $setting1; 
    echo $setting1; 
    } 
} 

$object = new myclass; 
?> 

Cela imprime rien. Cependant, si je fais "echo $ setting1" en dehors de la classe, il imprime "on". Lorsque j'ai essayé de définir la variable à l'intérieur du fichier lui-même plutôt que de l'inclure, j'ai imprimé 'on' quand j'ai créé un nouvel objet pour myclass. Y at-il quelque chose de spécial que je dois faire pour rendre les variables incluses disponibles dans la portée globale de la classe?

+0

Vous voudrez peut-être envisager la création d'une classe statique au lieu de vars globales pour des raisons de sécurité de l'espace de noms. Pour répondre directement à votre question, il semble que ce soit les problèmes de parenthèses que les autres ont mentionnés. – krdluzni

+0

quelle version de PHP? –

Répondre

8

Votre constructeur a besoin de parenthèses après son nom, par ex.

public function __construct() { 

} 

Je soupçonne que c'est de vous donner une erreur fatale et qui n'est pas montré à cause de vos paramètres display_errors/error_reporting.

+0

+1 - bien repéré. – karim79

+0

Nice, très rapide! :) –

+0

Merci. J'ai ajouté ceci, mais je suis toujours confronté au même problème: les variables incluses ne sont pas disponibles dans la portée globale de la classe. –

1

Vous avez été portés disparus entre parenthèses:

public function __construct { 

devrait être

public function __construct() { 

Résultat:

$ php -v 
PHP 5.2.5 (cli) (built: Nov 29 2007 09:31:38) 
2007-Macbook:Desktop mark$ php class.php 
on 
Questions connexes