"Bloodshed" <bloodshed@xosc.org> a écrit dans le message de news: c50h5a$cbt$1@news-reader4.wanadoo.fr...
> Bonjour,
>
> J'essaie d'afficher un message d'erreur si un constructeur
> de classe retourne false, de cette façon si :
>
> [code]
> <?php
> require("myclass.class.php")
> $class = new MyClass("argument") or die("Erreur !");
> ?>
> [/code]
>
> Mais cela ne marche pas ! Je ne comprend pas ?
>
> Merci d'avance,
> Bloodshed
Normal, comme le dis loufoque, un constructeur retourne une instance de la classe. Si tu veux gérer la construction des instances
d'une classe de façon plus avancée, utilise une méthode statique de type "factory", ce qui donne, par exemple et très basiquement :
<?php
class Test {
function Test($nom) {
$this->nom = $nom;
}
function factory($nom) {
if (is_string($nom)) {
return new Test($nom);
} else {
return false;
}
}
}
$myTest = &Test::factory(1) or die("Problème Usinage !");
?>
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette façon-ci : $class = new myClass("chaine") or die ("Erreur");
m-e-
"Bloodshed" a écrit dans le message de news: c51dtr$c6i$
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette façon-ci : $class = new myClass("chaine") or die ("Erreur");
Tu veux que je confirme la confirmation ? Alors je confirme, le "$class = new myClass(...) or die(...)" ne peut pas marcher à cause du new : son retour sera une nouvelle instance de myClass. Peut-être que dans certains langages objets cela aurait été possible. Mais en php, je ne vois vraiment pas comment. De tout façon, cela ne serait pas une très bonne pratique de POO. Sauf, bien-sûr, si myClass héritait de la classe booléen (classe qui n'existe pas en PHP, les booléens étant un type primitif). Enfin, je ne vais pas me balader dans les diversités et les subtilités de la POO pour valider ma confirmation.
"Bloodshed" <bloodshed@xosc.org> a écrit dans le message de news: c51dtr$c6i$1@news-reader2.wanadoo.fr...
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette
façon-ci : $class = new myClass("chaine") or die ("Erreur");
Tu veux que je confirme la confirmation ? Alors je confirme, le "$class = new myClass(...) or die(...)" ne peut pas marcher à cause
du new : son retour sera une nouvelle instance de myClass.
Peut-être que dans certains langages objets cela aurait été possible. Mais en php, je ne vois vraiment pas comment. De tout façon,
cela ne serait pas une très bonne pratique de POO. Sauf, bien-sûr, si myClass héritait de la classe booléen (classe qui n'existe pas
en PHP, les booléens étant un type primitif). Enfin, je ne vais pas me balader dans les diversités et les subtilités de la POO pour
valider ma confirmation.
"Bloodshed" a écrit dans le message de news: c51dtr$c6i$
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette façon-ci : $class = new myClass("chaine") or die ("Erreur");
Tu veux que je confirme la confirmation ? Alors je confirme, le "$class = new myClass(...) or die(...)" ne peut pas marcher à cause du new : son retour sera une nouvelle instance de myClass. Peut-être que dans certains langages objets cela aurait été possible. Mais en php, je ne vois vraiment pas comment. De tout façon, cela ne serait pas une très bonne pratique de POO. Sauf, bien-sûr, si myClass héritait de la classe booléen (classe qui n'existe pas en PHP, les booléens étant un type primitif). Enfin, je ne vais pas me balader dans les diversités et les subtilités de la POO pour valider ma confirmation.
Bloodshed
J'ai un autre problème
ceci : [code] <?php $class = new Myclass(); $class->fonction() or die ("Erreur"); ?> [/code]
Ne fonctionne pas, il me lance l'instruction die quelque soit le résultat (false ou true)
J'ai un autre problème
ceci :
[code]
<?php
$class = new Myclass();
$class->fonction() or die ("Erreur");
?>
[/code]
Ne fonctionne pas, il me lance l'instruction die quelque soit le
résultat (false ou true)
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License.
#class: Xerror #package: Xerror [1.0] <http://xerror.xosc.org/> #version: 1.0 #description: Gestion des erreurs. #help: Classe Xerror <http://xerror.xosc.org/help/?class=Xerror> class Xerror { #attribute: $errorFile <string> [Fichier des erreurs.] var $errorFile; #attribute: $errorMessage <array> [Messages d'erreurs.] var $errorMessage = array(); #attribute: $error <array> [Erreurs de traitements.] var $error = array();
#method: Xerror() #argument: $errorFile <string> #error: $error["parameterDefined"] <Il manque des arguments.> [Erreur : Un ou plusieurs paramètre(s) n'ont pas été renseignés.] #error: $error["fileExist"] <Le fichier n'existe pas.> [Erreur : Impossible de trouver le fichier d'erreurs.] #version: 1.0 #description: Cette méthode initialise les attributs #description: et charge le fichier d'erreurs. #help: Méthode Xerror <http://xerror.xosc.org/help/?method=Xerror> #comment: Cette méthode est le constructeur de la classe. function Xerror($errorFile) { $this->error["parameterDefined"] = "<b>Erreur :</b> Un ou plusieurs paramètre(s) n'ont pas été renseignés."; $this->error["fileExist"] = "<b>Erreur :</b> Impossible de trouver le fichier d'erreurs."; $this->error["messageExist"] = "<b>Erreur :</b> Le message d'erreur est introuvable.";
if (!empty($errorFile)) { if (@file_exists($errorFile)) { $this->errorMessage = @parse_ini_file($errorFile, true);
}
else { die($this->error["fileExist"]); } }
else { die($this->error["parameterDefined"]); } }
#method: displayError() #argument: $errorName <string> #error: $error["parameterDefined"] <Il manque des arguments.> [Erreur : Un ou plusieurs paramètre(s) n'ont pas été renseignés.] #error: $error["messageExist"] <Le message n'existe pas.> [Erreur : Le message d'erreur est introuvable.] #version: 1.0 #description: Cette méthode affiche le message d'une erreur. #help: Méthode displayError() <http://xerror.xosc.org/help/?method=displayError> function displayError($errorName, $errorGroup = false) { if (!empty($errorName)) { if (!empty($errorGroup)) { if (isset($this->errorMessage[$errorGroup][$errorName])) {
require("xerror.class.php"); $error = new Xerror("error.ini"); $error->displayError("erreur 1") or die ("Erreur"); $error->displayError("erreur 2", "section 1") or die ("Erreur");
?>
En l'occurence là je l'ai modifié, il affiche directement les messages d'erreurs (ce n'est pas vraiment ce que je veux mais bon)
Le problème étant qu'il lance l'instruction die même si l'instruction ne retourne rien ou retourne true !
J'utilise EasyPHP 1.7 peut-être un problème des nouvelles configurations ?
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License.
#class: Xerror
#package: Xerror [1.0] <http://xerror.xosc.org/>
#version: 1.0
#description: Gestion des erreurs.
#help: Classe Xerror <http://xerror.xosc.org/help/?class=Xerror>
class Xerror
{
#attribute: $errorFile <string> [Fichier des erreurs.]
var $errorFile;
#attribute: $errorMessage <array> [Messages d'erreurs.]
var $errorMessage = array();
#attribute: $error <array> [Erreurs de traitements.]
var $error = array();
#method: Xerror()
#argument: $errorFile <string>
#error: $error["parameterDefined"] <Il manque des arguments.>
[Erreur : Un ou plusieurs paramètre(s) n'ont pas été renseignés.]
#error: $error["fileExist"] <Le fichier n'existe pas.> [Erreur
: Impossible de trouver le fichier d'erreurs.]
#version: 1.0
#description: Cette méthode initialise les attributs
#description: et charge le fichier d'erreurs.
#help: Méthode Xerror <http://xerror.xosc.org/help/?method=Xerror>
#comment: Cette méthode est le constructeur de la classe.
function Xerror($errorFile)
{
$this->error["parameterDefined"] = "<b>Erreur :</b> Un
ou plusieurs paramètre(s) n'ont pas été
renseignés.";
$this->error["fileExist"] = "<b>Erreur :</b> Impossible
de trouver le fichier d'erreurs.";
$this->error["messageExist"] = "<b>Erreur :</b> Le
message d'erreur est introuvable.";
if (!empty($errorFile))
{
if (@file_exists($errorFile))
{
$this->errorMessage =
@parse_ini_file($errorFile, true);
}
else {
die($this->error["fileExist"]);
}
}
else {
die($this->error["parameterDefined"]);
}
}
#method: displayError()
#argument: $errorName <string>
#error: $error["parameterDefined"] <Il manque des arguments.>
[Erreur : Un ou plusieurs paramètre(s) n'ont pas été renseignés.]
#error: $error["messageExist"] <Le message n'existe pas.>
[Erreur : Le message d'erreur est introuvable.]
#version: 1.0
#description: Cette méthode affiche le message d'une erreur.
#help: Méthode displayError()
<http://xerror.xosc.org/help/?method=displayError>
function displayError($errorName, $errorGroup = false)
{
if (!empty($errorName))
{
if (!empty($errorGroup))
{
if
(isset($this->errorMessage[$errorGroup][$errorName]))
{
require("xerror.class.php");
$error = new Xerror("error.ini");
$error->displayError("erreur 1") or die ("Erreur");
$error->displayError("erreur 2", "section 1") or die ("Erreur");
?>
En l'occurence là je l'ai modifié, il affiche directement les messages
d'erreurs (ce n'est pas vraiment ce que je veux mais bon)
Le problème étant qu'il lance l'instruction die même si l'instruction ne
retourne rien ou retourne true !
J'utilise EasyPHP 1.7 peut-être un problème des nouvelles configurations ?
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License.
#class: Xerror #package: Xerror [1.0] <http://xerror.xosc.org/> #version: 1.0 #description: Gestion des erreurs. #help: Classe Xerror <http://xerror.xosc.org/help/?class=Xerror> class Xerror { #attribute: $errorFile <string> [Fichier des erreurs.] var $errorFile; #attribute: $errorMessage <array> [Messages d'erreurs.] var $errorMessage = array(); #attribute: $error <array> [Erreurs de traitements.] var $error = array();
#method: Xerror() #argument: $errorFile <string> #error: $error["parameterDefined"] <Il manque des arguments.> [Erreur : Un ou plusieurs paramètre(s) n'ont pas été renseignés.] #error: $error["fileExist"] <Le fichier n'existe pas.> [Erreur : Impossible de trouver le fichier d'erreurs.] #version: 1.0 #description: Cette méthode initialise les attributs #description: et charge le fichier d'erreurs. #help: Méthode Xerror <http://xerror.xosc.org/help/?method=Xerror> #comment: Cette méthode est le constructeur de la classe. function Xerror($errorFile) { $this->error["parameterDefined"] = "<b>Erreur :</b> Un ou plusieurs paramètre(s) n'ont pas été renseignés."; $this->error["fileExist"] = "<b>Erreur :</b> Impossible de trouver le fichier d'erreurs."; $this->error["messageExist"] = "<b>Erreur :</b> Le message d'erreur est introuvable.";
if (!empty($errorFile)) { if (@file_exists($errorFile)) { $this->errorMessage = @parse_ini_file($errorFile, true);
}
else { die($this->error["fileExist"]); } }
else { die($this->error["parameterDefined"]); } }
#method: displayError() #argument: $errorName <string> #error: $error["parameterDefined"] <Il manque des arguments.> [Erreur : Un ou plusieurs paramètre(s) n'ont pas été renseignés.] #error: $error["messageExist"] <Le message n'existe pas.> [Erreur : Le message d'erreur est introuvable.] #version: 1.0 #description: Cette méthode affiche le message d'une erreur. #help: Méthode displayError() <http://xerror.xosc.org/help/?method=displayError> function displayError($errorName, $errorGroup = false) { if (!empty($errorName)) { if (!empty($errorGroup)) { if (isset($this->errorMessage[$errorGroup][$errorName])) {
require("xerror.class.php"); $error = new Xerror("error.ini"); $error->displayError("erreur 1") or die ("Erreur"); $error->displayError("erreur 2", "section 1") or die ("Erreur");
?>
En l'occurence là je l'ai modifié, il affiche directement les messages d'erreurs (ce n'est pas vraiment ce que je veux mais bon)
Le problème étant qu'il lance l'instruction die même si l'instruction ne retourne rien ou retourne true !
J'utilise EasyPHP 1.7 peut-être un problème des nouvelles configurations ?
Pascal (Collectours)
m-e- wrote:
"Bloodshed" a écrit dans le message de news: c51dtr$c6i$
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette façon-ci : $class = new myClass("chaine") or die ("Erreur");
Tu veux que je confirme la confirmation ? Alors je confirme, le "$class > new myClass(...) or die(...)" ne peut pas marcher à cause du new : son retour sera une nouvelle instance de myClass. [snip]
Bonjour, et pourtant, de façon amusante,le code ci-dessous fonctionne très bien: et affiche "Je veux bien créer t_go Je ne veux pas créer t_nogo Décidemment, je ne veux pas créer t_nogo !" Il suffit de mettre $this à false avant de revenir : l'instance est remise à zéro. Je l'utilise très souvent lorsque je veux retourner une instance nulle quand les params passés pour la création d'objet ne conviennent pas au constructeur. Il suffit donc que le posteur original adapte celui-ci en conséquence. Cordialement Pascal
<?php
class test {
var $my_param;
function test($p) { # on accepte de créer une instance seulement # si $p est compris entre 1 et 5
if ( $p < 1 || $p > 5) { $this = false; return false; } # on veut bien créer l'instance $this->my_param = $p; } }
# premier essai if ( $t_go = new test(3) ) { print 'Je veux bien créer t_go'; }
print '<br />'; # essai refusé, la class retourne bien false; if ( ! ( $t_nogo = new test(6)) ) { print 'Je ne veux pas créer t_nogo'; }
print '<br />'; # que j'aurais pu aussi écrire comme demandé $t_nogo = new test(6) or die('Décidemment, je ne veux pas créer t_nogo !'); ?>
m-e- wrote:
"Bloodshed" <bloodshed@xosc.org> a écrit dans le message de news:
c51dtr$c6i$1@news-reader2.wanadoo.fr...
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette
façon-ci : $class = new myClass("chaine") or die ("Erreur");
Tu veux que je confirme la confirmation ? Alors je confirme, le "$class > new myClass(...) or die(...)" ne peut pas marcher à cause du new : son
retour sera une nouvelle instance de myClass.
[snip]
Bonjour,
et pourtant, de façon amusante,le code ci-dessous fonctionne très bien:
et affiche
"Je veux bien créer t_go
Je ne veux pas créer t_nogo
Décidemment, je ne veux pas créer t_nogo !"
Il suffit de mettre $this à false avant de revenir : l'instance est remise à
zéro.
Je l'utilise très souvent lorsque je veux retourner une instance nulle quand
les params passés pour la création d'objet ne conviennent pas au
constructeur.
Il suffit donc que le posteur original adapte celui-ci en conséquence.
Cordialement
Pascal
<?php
class test {
var $my_param;
function test($p) {
# on accepte de créer une instance seulement
# si $p est compris entre 1 et 5
if ( $p < 1 || $p > 5) {
$this = false;
return false;
}
# on veut bien créer l'instance
$this->my_param = $p;
}
}
# premier essai
if ( $t_go = new test(3) ) {
print 'Je veux bien créer t_go';
}
print '<br />';
# essai refusé, la class retourne bien false;
if ( ! ( $t_nogo = new test(6)) ) {
print 'Je ne veux pas créer t_nogo';
}
print '<br />';
# que j'aurais pu aussi écrire comme demandé
$t_nogo = new test(6) or die('Décidemment, je ne veux pas créer
t_nogo !');
?>
"Bloodshed" a écrit dans le message de news: c51dtr$c6i$
Interessant merci, mais y a-t-il un autre moyen de procéder ? de cette façon-ci : $class = new myClass("chaine") or die ("Erreur");
Tu veux que je confirme la confirmation ? Alors je confirme, le "$class > new myClass(...) or die(...)" ne peut pas marcher à cause du new : son retour sera une nouvelle instance de myClass. [snip]
Bonjour, et pourtant, de façon amusante,le code ci-dessous fonctionne très bien: et affiche "Je veux bien créer t_go Je ne veux pas créer t_nogo Décidemment, je ne veux pas créer t_nogo !" Il suffit de mettre $this à false avant de revenir : l'instance est remise à zéro. Je l'utilise très souvent lorsque je veux retourner une instance nulle quand les params passés pour la création d'objet ne conviennent pas au constructeur. Il suffit donc que le posteur original adapte celui-ci en conséquence. Cordialement Pascal
<?php
class test {
var $my_param;
function test($p) { # on accepte de créer une instance seulement # si $p est compris entre 1 et 5
if ( $p < 1 || $p > 5) { $this = false; return false; } # on veut bien créer l'instance $this->my_param = $p; } }
# premier essai if ( $t_go = new test(3) ) { print 'Je veux bien créer t_go'; }
print '<br />'; # essai refusé, la class retourne bien false; if ( ! ( $t_nogo = new test(6)) ) { print 'Je ne veux pas créer t_nogo'; }
print '<br />'; # que j'aurais pu aussi écrire comme demandé $t_nogo = new test(6) or die('Décidemment, je ne veux pas créer t_nogo !'); ?>