Parse error php/MySql

Résolu
Bonjour,

voici mon code qui me met parse error !
bool class_exists (string $Form_Input);
if (class_exists('MyClass')) {
$myclass = new MyClass();
}
abstract class Form_Input extends Form_Field {

public function __construct($name, $form) {

parent::__construct($name, $form);
$this->attrs['type'] = 'text';
}

public function get_cleaned_value($value) {

$value = trim($value);
return parent::get_cleaned_value($value);
}

// abstract public function __toString($tab = '');
public function __toString()
{
$tab = '';
$o = $tab.'<form'.$this->attrs.'>'."\n";

if (empty($this->fieldsets)) {

$o .= $this->_html_fields($tab."\t", array_diff_key($this->fields, $this->hidden_fields, $this->submit_fields));
if (!empty($this->hidden_fields)) { $o .= $this->_html_hidden_fields($tab."\t", $this->hidden_fields); }
$o .= $this->_html_fields($tab."\t", $this->submit_fields);

} else {

$hidden_fields = $this->hidden_fields;
$submit_fields = $this->submit_fields;

foreach ($this->fieldsets as $legend => $fields) {

$o .= $this->_html_fieldset($tab, $legend, $fields);

foreach($fields as $f) {

unset($hidden_fields[$f], $submit_fields[$f]);
}
}
if (!empty($hidden_fields)) { $o .= $this->_html_hidden_fields($tab."\t", $hidden_fields); }
if (!empty($submit_fields)) { $o .= $this->_html_fields($tab."\t", $submit_fields); }
}
$o .= $tab.'</form>';
return $o;
}
}

en fait je veux vérifier si ma classe existe !

Merci de votre aide

9 réponses

  1. Bonjour.
    Il serai bien de nous donner la ligne ou le parse error est trouvé.

    Ensuite, une vérification avec isset serait je pense approprié.

    if (isset(class_exists('MyClass'))) 


    1. Pourquoi utiliser isSet au fait?
      class_exists envoie un booléen true/false...
  2. Le problème es que tu code comme en C.
    Bien que le langage PhP ressemble au langage C il est COMPLÈTEMENT différent...
    inutile de déclaré le type de tes variables.

    bool class_exists (string $Form_Input);
    ||
    V
    class_exists ($Form_Input);
    ou
    $bool = class_exists ($Form_Input);
    1. en effet ça marche déjà mieux, mais toujours une erreur :
      Undefined variable: Form_Input
      class_exists ($Form_Input);
      1. Ta variable $Form_Input n'est pas déclaré.

        Je m'explique: class_exists vérifie si la classe est définie. $Form_Input doit donc correspondre au nom d'une de tes classes. Exemple: $Form_Input = 'MyClass';
        1. Merci beaucoup, cette erreur ne s'affiche plus !

          c'est bien ce code qu'on doit mettre pour voir si une classe a déjà été déclarée ?
          que doit-on faire quand "Cannot redeclare class Form_Input " s'affiche ?
          1. Alors:
            if (class_exists('MyClass'))  
            {  
             $myclass = new MyClass();  
            }   
            

            Ce bout de code vérifie que ta classe est bien définie, elle existe, elle est inclus, bref si tout est ok, tu l'instancie.

            Si tu as l'erreur:
            Cannot redeclare class Form_Input

            C'est que ta classe Form_Input est déclarée plusieurs fois. Il faut voir au niveau de tes requires/includes.

            Pour inclure tes classes je ne peux que te conseiller d'utiliser require_once("Classe/MaClasse.php");

            require à la différence d'include va émettre une erreur de compilation si le fichier n'existe pas, include se contente d'un warning.
            le _once permet de n'inclure le fichier qu'une seule fois.

            CF ici
            1. Je te remercie pour tout ! ça fonctionne ! plus d'erreur à ce niveau la !
              Merci =)