recherche

Maison  >  Questions et réponses  >  le corps du texte

Problème de constructeur de classe PHP

class upload{
   protected $name;
    protected $sex;

 public function __construct($name='默认值',$sex='默认值'){
     $this->name=$name;
     $this->sex=$sex;
  }
}

Pourquoi ça ne peut pas être écrit comme ça ?

 public function __construct($name,$sex){
     $this->name=$name;
     $this->sex=$sex;
  }

Puis-je aussi écrire comme ça ? S'il y a trop de paramètres ci-dessus, quelle année, quel cheval et quel mois faut-il inscrire ?

public function __construct($opt){
     $this->name=$opt->name;
     $this->sex=$opt->sex;
  }

Pourquoi devez-vous ajouter une valeur par défaut au constructeur, sinon une erreur sera signalée ! ! ! J'ai l'habitude d'écrire du js, donc je ne comprends pas un peu le constructeur de php. Expliquez, est-il nécessaire d'attribuer des valeurs par défaut aux paramètres ?


PHP中文网PHP中文网2820 Il y a quelques jours583

répondre à tous(6)je répondrai

  • 天蓬老师

    天蓬老师2017-05-16 12:04:46

    N'a rien à voir avec les constructeurs.
    Tant que les paramètres de la fonction ne reçoivent pas de valeurs par défaut, vous devez transmettre les paramètres lors de son utilisation.

    Il n'est pas juste de dire que c'est plus gênant que js. Dans js (avant ES6), définir des valeurs par défaut pour les fonctions est plus gênant que php, alors que puis-je dire ?

    De plus, la troisième méthode que vous avez mentionnée consiste à passer un objet ou un tableau en paramètre. Cette approche est bien sûr correcte, vous pouvez utiliser une boucle lors de l'attribution de valeurs au lieu de les écrire une par une.

    répondre
    0
  • 黄舟

    黄舟2017-05-16 12:04:46

    1. Vous n'avez pas besoin de donner une valeur par défaut. L'erreur que vous avez signalée ici devrait être due au fait que votre premier paramètre a reçu une valeur par défaut​​doit être placé à l'arrière, selon la grammaire. (Pour plus de détails, veuillez vous référer au document)
    2. Pass in Bien sûr, l'objet est également possible

    .

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-16 12:04:46

    Cela n'a rien à voir avec le constructeur
    Si vous ne transmettez pas de paramètres lors de la définition de la fonction, une erreur sera signalée

    function a($name,$age = 1)
    {
    }

    $name doit être transmis, $age n'est pas obligatoire. $name必传,$age不用。
    至于为什么,PHP语法规定Quant à savoir pourquoi, Règlements sur la syntaxe PHP


    La syntaxe PHP ne signale pas d'erreur Essayez de l'exécuter si PHP signale une erreur, publiez le message d'erreur

    .

    répondre
    0
  • 某草草

    某草草2017-05-16 12:04:46

    Si la fonction PHP est explicitement spécifiée et que les paramètres ne reçoivent pas de valeurs par défaut, les paramètres doivent être transmis lors de l'appel. S'il existe une valeur par défaut, vous pouvez lire la valeur par défaut sans transmettre de paramètres lors de l'appel.

    Si vous trouvez difficile de transmettre explicitement des paramètres, vous pouvez utiliser la fonction func_get_args() pour lire les paramètres.

    Après PHP5.6, vous pouvez également utiliser le formulaire de fonction A(...$args) pour lire les paramètres.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-05-16 12:04:46

    Le constructeur est la fonction appelée par défaut lorsque vous créez un nouvel objet

    Les paramètres de la fonction doivent être passés s'il n'y a pas de valeur par défaut. Il s'agit d'une règle grammaticale

    .

    Toutes les fonctions sont comme ça. Peu importe le nombre de paramètres dont vous disposez, vous devez les transmettre un par un

    .

    Toutes les langues que je connais ont cette règle

    répondre
    0
  • 大家讲道理

    大家讲道理2017-05-16 12:04:46

    Pouvez-vous porter un tableau

    répondre
    0
  • Annulerrépondre