2012-09-02 6 views
-5

J'ai suivi un tutoriel très intéressant qui a vraiment testé ma capacité à programmer Php. J'ai toujours pensé que je suis l'homme mais je me sens être le pire du pire. Cela dit, au cours du tutoriel, une exigence pour instancier un objet a été expliquée, donc j'ai tapé ce code et ne me comprends pas tout fonctionne correctement, aucun problème. La chose la plus importante est que je ne comprends pas vraiment comment le travail en dessous est pourquoi je voudrais que quelqu'un m'explique encore plus. ma question lorsque vous tirez un enregistrement de la base de données en utilisant MySQL_fetch_array quoi et comment les données sont présentées à la variable de réception. par exemple ci-dessousorienté objet PHP et Arrays

private static function instantiate($record){ 
$object = new self; 
    foreach($record as $attribute => $value){ 
    if($object->has_attribute($attribute)){ 
     $object->$attribute =$value; 
    } 
    } 
    return $object; 
} 

si j'ai 3 champs dans une table par exemple le nom, l'âge, l'adresse et une let valeur disent Jhone, 23, arizona ce sera conserver dans l'attribut et ce sera magasin dans la clé et où est l'index et comment extraire les données de la base de données comme l'exemple ci-dessus et l'assigner à l'autre tableau. S'il vous plaît, je n'ai pas besoin de codes, mes codes fonctionnent bien, ce dont j'ai besoin, c'est d'une explication très primitive et claire. et d'ailleurs merci d'avance pour votre soutien.

+4

Être un programmeur est de savoir accepter combien peu vous savez. –

+1

Vous avez bien _you êtes le man_, mais vous utilisez toujours mysql_ * '? et vous n'avez jamais entendu parler ou lu de l'interface 'ArrayAccess' ... ?? –

+0

De même, n'utilisez pas les fonctions 'mysql_ *' pour écrire du nouveau code. Ils ne sont plus entretenus et la communauté a commencé [processus de dépréciation] (http://goo.gl/KJveJ). Voir la * [boîte rouge] (http://goo.gl/GPmFd) *? Au lieu de cela, vous devriez en apprendre davantage sur les [instructions préparées] (http://goo.gl/vn8zQ) et utiliser soit [PDO] (http://php.net/pdo) ou [MySQLi] (http://php.net/ mysqli). Si vous ne pouvez pas décider lequel, [cet article] (http://goo.gl/3gqF9) vous aidera. Si vous choisissez PDO, [voici un bon tutoriel] (http://goo.gl/vFWnC). –

Répondre

0

Ce qui aide vraiment est d'imprimer des choses dans vos méthodes (avec print_r par exemple). Par exemple, essayez avec votre méthode:

private static function instantiate($record){ 
print_r($record); 
 $object = new self; 
print_r($object); 
   foreach($record as $attribute => $value){ 
    echo "attribute: $attribute, value:$value <br />"; 
     if($object->has_attribute($attribute)){ 
      $object->$attribute =$value; 
     } 
   } 
    print_r($object); 
    die(); 
   return $object; 
 } 

De cette façon, vous pouvez voir exactement ce qui se passe avec l'objet, etc. foreach

+0

'var_dump()' est généralement plus utile, mais cela fonctionne aussi bien. –

1
/** 
* @param array $record Record as returned from database 
* 
*/ 
private static function instantiate($record){ 
    //Create a new instance of this class. 
    $object = new self; 
    //Iterate the record to find all of the data 
    foreach($record as $attribute => $value){ 
     //If this class has a defined attribute which was found in the record 
     if($object->has_attribute($attribute)){ 
      //Set it to the value from the database. 
      $object->$attribute =$value; 
     } 
    } 
    //Return the instance for others to use 
    return $object; 
} 

Voici votre fonction avec votre documentation.

+0

Je sais tout ce que vous avez dit que je n'avais pas besoin de commentaires. Je pense que vous n'avez pas compris ma question. la structure de l'enregistrement est tirée comment est-elle stockée dans les sections Key et Value du tableau. maintenant vous avez un champ Nom et Age du champ ce qui est la clé et quelle est la valeur et où sont les attributs stockés et quel est l'index. ce que je veux comprendre et je parie que la bouche intelligente Elias Van Ootegem ne peut pas répondre à mes questions. –

+0

La clé est 'age', la valeur est la valeur de' age' pour cette ligne extraite de la base de données. "Attribut" est ce que nous appelons les variables qui font partie des objets (tout comme les fonctions qui font partie des objets sont appelées ** méthodes **). –

+0

@SalimAlmughairi pourquoi ne pas simplement essayer ma suggestion, de sorte que vous pouvez voir toutes les choses que vous demandez ici. Aussi, essayez de rester poli (la remarque "bouche intelligente"). Parfois, il est difficile d'obtenir l'intention de quelqu'un à partir d'une source écrite (en d'autres termes, Elias n'a peut-être pas eu votre sens de l'humour). Nous faisons tous de notre mieux pour répondre à votre question, parfois avec des critiques, parfois avec des commentaires, parfois avec du code. Essayez d'apprécier toutes les approches. –