php verstehen (Fragezeichen in einer Zeile)
Verfasst: Do 8. Jul 2010, 14:14
Hallo Leute,
ich habe bin gerade dabei mich in PHP einzuarbeiten und versuche die eine oder andere Datei in Contenido zu verstehen.
Da ich gerade an der Navigation bin, genau gesagt am Modul Navigation_Main, gehe ich gerade systematisch die Contenido_NavMain_Util.class.php durch, da Sie gewisse Klassen für die Navigation zu liefern scheint (oder liege ich da falsch?):
Wie ihr am //MC erkennen könnt habe ich von oben angefangen für mich alles zu kommentieren um alles zu verstehen, damit ich irgendwann weiss was ich wo verändern könnte, rückwirkend auf die Navigation. Wie dem auch sei, Ihr sehr ich bin noch ganz am Anfang und häge gerade an Folgender Zeile:
So wie ich das bis zur hälfte verstanden habe handelt es sich hierbei um ein array, in diesem Falle wird der Array $aDepthInfo[0] mit einem Wert gefüllt, nur ist der Wert hier mit isset ja eigentlich eine anfrage die mit true oder false beantwortet wird, in diesem Fall sogar der Attay selbst.
Mein Problem ist alles ab dem Fragezeichen, dem ich keine Bedeutung beimessen kann.
Ich könnte mir zwar vorstellen, dass diese Frage sicherstellen soll, dass $aDepthInfo[0] tatsächlich nicht schon belegt ist mit einem Wert, bevor es dann belegt wird. Also dass es heisst belege $aDepthInfo[0] mit einem Wert wenn $aDepthInfo[0] noch frei ist, sonnst mache $aDepthInfo[0] +1 oder sowas.
Ich könnte solche Fragen auch in irgend einem PHP Forum stellen, aber ich dachte ich versuche es erst einmal hier, da ich ja speziell Contenido verstehen möchte.
Hoffe auf eine Antwort für Dummys
vielen Dank!
Wondrak
ich habe bin gerade dabei mich in PHP einzuarbeiten und versuche die eine oder andere Datei in Contenido zu verstehen.
Da ich gerade an der Navigation bin, genau gesagt am Modul Navigation_Main, gehe ich gerade systematisch die Contenido_NavMain_Util.class.php durch, da Sie gewisse Klassen für die Navigation zu liefern scheint (oder liege ich da falsch?):
Code: Alles auswählen
<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* Recursive loop over given category for building a frontend navigation
*
* Requirements:
* @con_php_req 5.0
*
*
* @version 1.0.0
* @author Rudi Bieller
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2009-01-15
*
* $Id: Contenido_NavMain_Util.class.php 969 2009-01-19 12:32:13Z rudi.bieller $
* }}
*
*/
class Contenido_NavMain_Util {
//MC hier beginnt die Klasse Contenido_NavMain_Util
/**
* Recursive Loop over all (sub)categories.
* Each level will be assigned a css class navmainStandardLevel_x
*
* @param Contenido_Category $oCategory
* @param Contenido_FrontendNavigation $oFrontendNavigation
* @param Template $oTpl
* @param string $sUrlStyle
* @param array $aCfg
* @param int $iLang
* @param array $aLevelInfo Information for marking active cat per levels
* @param array $aDepthInfo Info on level depth / where to stop. Format: array(iCurrentLoopCount, iMaxLoopCount)
* @return void
*/
public static function loopCats(Contenido_Category $oCategory, Contenido_FrontendNavigation $oFrontendNavigation, Template $oTpl, array $aCfg, $iLang, array $aLevelInfo, $iCurrentPageIdcat, array $aDepthInfo = array()) {
//MC static bedeutet, dass die Funktion statisch ist
//MC Statisch heißt, dass diese Methoden oder Eigenschaften verwendet werden können, ohne dass ein Objekt aus der Klasse erzeugt wurde
//MC function leitet die Funktion ein
//MC public: Methoden und Eigenschaften werden für den öffentlichen Zugriff freigegeben
//MC loopCat ist die Funktion und hat die Parameter in der Klammer zwischen den Kommastellen
$aDepthInfo[0] = isset($aDepthInfo[0]) ? $aDepthInfo[0] + 1 : 1;
$aDepthInfo[1] = isset($aDepthInfo[1]) ? $aDepthInfo[1] : 1;
// display current item
$iItemLevel = $oFrontendNavigation->getLevel($oCategory->getIdCat());
if (!isset($aLevelInfo[$oCategory->getIdCat()])) {
$aLevelInfo[$oCategory->getIdCat()] = array();
}
$oCurrentSubcategories = $oFrontendNavigation->getSubCategories($oCategory->getIdCat());
$aLevelInfo[$oCategory->getIdCat()]['has_children'] = $oCurrentSubcategories->count() > 0;
$aLevelInfo[$oCategory->getIdCat()]['first_child_item'] = -1;
$aLevelInfo[$oCategory->getIdCat()]['last_child_item'] = -1;
$bMarkActive = $oCategory->getIdCat() == $iCurrentPageIdcat || $oFrontendNavigation->isInPathToRoot($oCategory->getIdCat(), $iCurrentPageIdcat);
if ($oCurrentSubcategories->count() > 0) {
$aLevelInfo[$oCategory->getIdCat()]['first_child_item'] = $oCurrentSubcategories[0]->getIdCat();
$aLevelInfo[$oCategory->getIdCat()]['last_child_item'] = $oCurrentSubcategories[$oCurrentSubcategories->count()-1]->getIdCat();
}
// this is just for sample client - modify to your needs!
if ($aCfg['url_builder']['name'] == 'front_content') {
$aParams = array('lang' => $iLang, 'idcat' => $oCategory->getIdCat());
} else {
$aParams = array('a' => $oCategory->getIdCat(),
'idcat' => $oCategory->getIdCat(), // needed to build category path
'lang' => $iLang, // needed to build category path
'level' => 1); // needed to build category path
}
// fill template with values
$oTpl->set('d', 'name', $oCategory->getCategoryLanguage()->getName());
$oTpl->set('d', 'css_level', $iItemLevel);
$oTpl->set('d', 'css_first_item', ($aLevelInfo[$oCategory->getIdParent()]['first_child_item'] == $oCategory->getIdCat() ? ' first' : ''));
$oTpl->set('d', 'css_last_item', ($aLevelInfo[$oCategory->getIdParent()]['last_child_item'] == $oCategory->getIdCat() ? ' last' : ''));
$oTpl->set('d', 'css_active_item', ($bMarkActive === true ? ' active' : ''));
try {
$oTpl->set('d', 'url', Contenido_Url::getInstance()->build($aParams));
} catch (InvalidArgumentException $e) {
$oTpl->set('d', 'url', '#');
}
$oTpl->next();
// continue until max level depth
if ($aDepthInfo[1] > $aDepthInfo[0]) {
// check if current item has sub-items to be displayed
$bShowFollowUps = ($oCategory->getIdCat() == $iCurrentPageIdcat || $oFrontendNavigation->isInPathToRoot($oCategory->getIdCat(), $iCurrentPageIdcat))
? true : false;
if ($bShowFollowUps === true && $oCurrentSubcategories->count() > 0) {
$oSubCategories = $oCurrentSubcategories;
foreach ($oSubCategories as $oSubCategory) {
self::loopCats($oSubCategory, $oFrontendNavigation, $oTpl, $aCfg, $iLang, $aLevelInfo, $iCurrentPageIdcat, $aDepthInfo);
}
}
}
}
}
?>
Code: Alles auswählen
$aDepthInfo[0] = isset($aDepthInfo[0]) ? $aDepthInfo[0] + 1 : 1;
Mein Problem ist alles ab dem Fragezeichen, dem ich keine Bedeutung beimessen kann.
Ich könnte mir zwar vorstellen, dass diese Frage sicherstellen soll, dass $aDepthInfo[0] tatsächlich nicht schon belegt ist mit einem Wert, bevor es dann belegt wird. Also dass es heisst belege $aDepthInfo[0] mit einem Wert wenn $aDepthInfo[0] noch frei ist, sonnst mache $aDepthInfo[0] +1 oder sowas.
Ich könnte solche Fragen auch in irgend einem PHP Forum stellen, aber ich dachte ich versuche es erst einmal hier, da ich ja speziell Contenido verstehen möchte.
Hoffe auf eine Antwort für Dummys

vielen Dank!
Wondrak