Il ne faut pas __isset
, parce isset()
n'est pas la même chose que empty()
Quelle est la fonction magique de empty() en PHP?
Répondre
Je pense qu'en général, vous constaterez que ce qui suit est l'équivalent PHP:
isset($variable[0])
Si, par exemple, variable est une chaîne, cela détecterait que la chaîne était vide. Cela fonctionnerait de la même manière pour les types les plus primitifs (sinon tous).
Comme il est dit sur this page:
__isset() est déclenchée en appelant isset() ou vide() sur inaccessibles propriétés.
Il n'y a pas de magie méthode dédiée à vide()
Si __isset() retourne true, vide() invoquera alors __get() pour vérifier la valeur de la propriété.
Ainsi, le résultat est toujours le même ou ' isset() 'ou' empty() '? – user198729
Oui, si votre méthode __isset renvoie true, empty() et isset() retourneront true. Vous devriez probablement implémenter une méthode "non magique" pour faire la vérification de empty(), et garder __isset seulement pour isset() – Inspire
Hmm en fait, il semble que empty() retourne true si la méthode __isset retourne false mais isset() renvoie false dans ce cas. Si __isset renvoie true, ils retournent tous les deux true (testé sur PHP 5.3.0) – Inspire
property_exists()
ne fonctionne pas pour vous si vous ne faites que tester si une variable de classe existe?
En complément à la réponse de Inspire:
class Foo {
public function __isset($name) {
echo "public function __isset($name)\n";
return 'bar'===$name;
}
public function __get($name) {
echo "public function __get($name)\n";
return 'bar'===$name ? 0 : NULL;
}
}
$foo = new Foo;
echo empty($foo->foo) ? ' empty' : ' not empty', "\n";
echo empty($foo->bar) ? ' empty' : ' not empty', "\n";
la sortie est
public function __isset(foo)
empty
public function __isset(bar)
public function __get(bar)
empty
sens pour la première propriété (foo) vide() n'invoquaient __isset() qui retourne faux - > empty($foo->foo)===true
Pour la deuxième propriété (barre) __isset() a été appelée et elle a renvoyé true. Ensuite, la propriété est récupérée via __get() et interprétée comme une valeur booléenne (voir http://docs.php.net/language.types.type-juggling). Et depuis (bool) 0 est false
, vide() retourne également true
pour empty($foo->bar)
- 1. Quelle est l'utilité de la fonction mysql_rollback() en PHP?
- 2. Quelle est la différence entre .empty(). Append() et .html()?
- 3. PHP Catch "Empty" Includes
- 4. PHP empty() sur __get accessor
- 5. Comment créer un carré magique en PHP?
- 6. PHP: quelle alternative à empty(), où la chaîne "0" n'est pas traitée comme vide?
- 7. quelle est la classe abstraite en php?
- 8. empty() retourne TRUE sur la propriété non-vide de l'objet
- 9. Est-ce que SQL Server dispose d'une fonction d'annulation magique?
- 10. php 5.1.6 Méthode magique __toString
- 11. Quelle est la fonction Y?
- 12. quelle est la meilleure méthode pour faire la fonction de chat en PHP?
- 13. Quelle est la fiabilité de la session en PHP?
- 14. Dans quel scénario aurait-on besoin d'utiliser la fonction magique de PHP toString()
- 15. Quelle est la signification de "()" dans un appel de fonction?
- 16. Mock testing et la méthode magique __get de PHP
- 17. Quelle est cette syntaxe en PHP?
- 18. C quelle est la fonction de cette fonction?
- 19. Quelle est la différence entre -> et :: en PHP?
- 20. Quelle est la syntaxe correcte de l'instruction SQL en PHP?
- 21. Quelle est la portée de require_once en PHP?
- 22. Quelle fonction PHP String utiliser?
- 23. apache2 et le binaire magique php
- 24. Quelle est la maturité PHP: SVN
- 25. jQuery empty() vs remove()
- 26. Quelle est la fonction inet_addr équivalente en C#
- 27. PHP avertissement méthode magique set() class.XMLHttpRequest.php
- 28. quelle est la fonction du système en python
- 29. quelle est la même fonction de FOUND_ROWS() dans firebird?
- 30. Quelle est la fonction try block handler?
Je veux savoir quelle fonction magique est appelé à 'vide ($ this-> attr)' – user198729