8
votes

Comment puis-je apprendre les méthodes pouvant être consultées pour certains objets?

J'ai le code suivant:

$_productCollection = Mage::getResourceModel('catalog/product_collection')  
->addAttributeToSelect(array('name', 'price', 'small_image', 'status'), 'inner')  
->addCategoryFilter(Mage::getModel('catalog/category')->load($catid)); 
$_helper = $this->helper('catalog/output');
foreach ($_productCollection as $_product):
    echo $_product->getProductUrl();
endforeach


0 commentaires

3 Réponses :


22
votes

Tout d'abord, dans les modèles et les blocs, n'importe quelle méthode avec Obtenir code> ou un ou un ensemble code> peut être strong> être une méthode magique qui tire de l'objet ' Code> _Data ​​code> Array. Vous pouvez voir toutes les données d'un objet comme celle-ci xxx pré>

donc si ce tableau avait une clé nommée quelque_data ​​code>, vous pouvez appeler une méthode nommée getomedata p> xxx pré>

N'oubliez pas que certaines méthodes auront des méthodes réelles fortes> qui commencent par obtiennent code> et défini code>, vérifiez donc toujours la définition de la classe. p>

Deuxièmement, vous pouvez utiliser des fonctions de réflexion PHP (ou l'API de la classe de réflexion PHP plus compliquée) afin de voir quel classe un objet est, puis obtenir une liste de méthodes sur cette classe p> Tout d'abord, utilisez get_class pour obtenir le nom d'un objet d'un objet. P > xxx pré>

puis, passez ce get_class_methods pour obtenir une liste de toutes les méthodes appelables sur un Objet P>

$class_name = get_class($object);
$methods = get_class_methods($class_name);
echo "Methods for class $class_name \n<br />\n";
foreach($methods as $method)
{
    var_dump($method);
}


3 commentaires

+1 pour apprendre à utiliser une IDE appropriée (je préfère Netbeans), cela vous aidera à comprendre la conception OO de Magento infiniment plus rapide que le piratage dans un éditeur de texte "bête", en particulier lorsque combiné avec Live Débogage avec Xdebug.


+1 Pour l'IDE également, la hiérarchie d'objets profonds de Magento rend la navigation héritage de la classe via une sortie imprimée une tâche ingrate. Si vous êtes sur un projet Magento, vous êtes vraiment sur Zend_Debug :: Dump ($ objet-> getdata ()); est également Votre ami .


Vous pouvez simplement imprimer_r (get_class_mesthods ($ objet))



4
votes

Voici une direction simple pour trouver les fichiers de classe: -

1. Collection forte> p> xxx pré>

Le code ci-dessus signifie que nous appelons la classe de collecte de produits. Le fichier de classe peut être trouvé dans: - p>

App \ Code \ CORE \ MAGE \ Catalogue \ Modèle \ Resource \ ev \ mysql4 \ product \ Collection.php P> blockQuote>

in Collection.php Vous trouverez la classe suivante: - p> xxx pré>

Donc, votre fonction requise peut être dans mage_catalog_model_resource_av_mysql4_product_collection code> classer. P>

Si ce n'est pas là, il peut être dans la classe des parents, c'est-à-dire la classe parent, c'est-à-dire Mage_Catalog_mySQL4_Collection_abstract CODE> P>

2. Modèle fort> p>

De même, P>

$_helper = $this->helper('catalog/output');


0 commentaires

0
votes

Je suis un novice total, mais j'ai utilisé les informations sur cette page pour obtenir toutes les méthodes disponibles pour moi pour un certain objet et les envoyer à un journal.

Par exemple la catégorie_collection: < Pré> xxx


0 commentaires