Certes, je l'ai volé à cette question à partir de quelque part d'autre (ne me souviens pas où je l'ai lu plus), mais que c'était drôle:
Q: Qu'est - T_PAAMAYIM_NEKUDOTAYIM
?
Un: Son de l'opérateur de résolution de portée (deux points)
Expérimenté en PHP er sait immédiatement ce que cela signifie.
Moins connu (et pas l'hébreu) les développeurs voudrez peut-être lire ceci.
Mais des questions plus sérieuses maintenant:
Q: Quelle est la cause de cette mise en garde: 'Warning: Cannot modify header information - headers already sent" et ce qu'est une bonne pratique pour l'empêcher?
Un: *Cause:* les données du corps a été envoyé, causant des en-têtes envoyés trop.
Prévention: assurez-vous d'exécuter en-tête code spécifique en premier avant de sortir n'importe quel corps de données. Assurez-vous que vous n'avez pas accidentellement envoyé des espaces ou d'autres caractères.
Q: Quel est le problème avec cette requête: "SELECT * FROM table WHERE id = $_POST[ 'id' ]"
?
A: 1. Il est vulnarable à injection SQL. Ne jamais utiliser la saisie de l'utilisateur directement dans les requêtes. Désinfecter le premier. Preferebly utiliser des requêtes préparées (AOP) 2. Ne pas sélectionner toutes les colonnes (*), mais de spécifier chaque colonne. C'est principalement ment pour éviter que les requêtes ne monopolisant la mémoire lorsque, par exemple, une colonne BLOB est ajouté à un certain moment dans l'avenir.
Q: Quel est le problème avec cette instruction if: if( !strpos( $haystack, $needle ) ...
?
R: strpos
renvoie la position d'index de l'endroit où il trouve d'abord l' $de l'aiguille, ce qui pourrait être 0
. Depuis 0
correspond à false
la solution est d'utiliser une comparaison stricte: if( false !== strpos( $haystack, $needle )...
Q: Quel est le meilleur moyen d'écrire cette instruction si, et pourquoi?
if( 5 == $someVar )
ou if( $someVar == 5 )
Un: L'ancien, car il prévient la cession de 5 à $someVar lorsque vous oubliez d'utiliser 2 equalsigns ($someVar = 5
), et provoquera une erreur, ce dernier ne sera pas.
Q: étant Donné ce code:
function doSomething( &$arg )
{
$return = $arg;
$arg += 1;
return $return;
}
$a = 3;
$b = doSomething( $a );
...quelle est la valeur de $a
et $b
après l'appel de fonction et pourquoi?
R: $a
est 4
et $b
est 3
. L'ancien parce que $arg est passé par référence, la dernière parce que la valeur de retour de la fonction est une copie (pas une référence à) la valeur initiale de l'argument.
La programmation orientée objet spécifique
Q: Quelle est la différence entre public
, protected
et private
dans une définition de classe?
R: public
fait un membre de la classe pour "tout le monde", protected
rend le membre de la classe à la disposition de lui-même et les classes dérivées, private
rend le membre de la classe disponible uniquement à la classe elle-même.
Q: Quel est le problème avec ce code:
class SomeClass
{
protected $_someMember;
public function __construct()
{
$this->_someMember = 1;
}
public static function getSomethingStatic()
{
return $this->_someMember * 5; // here's the catch
}
}
Un: méthodes Statiques n'ont pas accès à $ce, parce que les méthodes statiques ne peuvent être exécutés sans l'instanciation d'une classe.
Q: Quelle est la différence entre une interface et une classe abstraite?
Un: Une interface définit un contrat entre une application de classe et un objet qui appelle l'interface. Une classe abstraite pré-définit un certain comportement pour les classes qui le prolongera. Dans une certaine mesure cela peut aussi être considéré comme un contrat, puisqu'il assure certaines méthodes d'exister.
Q: Quel est le problème avec les classes qui essentiellement définir les getters et les setters, que la carte droit interne des membres, sans avoir réellement méthodes d'exécuter le comportement?
R: Cela peut être une odeur de code, puisque l'objet agit comme un anobli tableau, sans beaucoup d'autres de l'utiliser.
Q: Pourquoi est-PHP de mise en œuvre de l'utilisation des interfaces sous-optimale?
Un: PHP ne permet pas de définir le type de retour attendu de la méthode, ce qui rend essentiellement des interfaces assez inutile. :-P