php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.08.2006, 23:37  
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 206
phpbeginner
Standard modul-klassen

Nabend

ich hab folgende Frage, ich will in einem pulldown menü titel des moduls anzeigen. es gibt ein verzeichnis module wo alle modul-klassen sind.

das modul sieht so aus
PHP-Code:
class news
    
{
        public 
$name     'News';
        public 
$title    'News';
        public 
$description    'News Modul für bla bla';
        
        private function 
__construct() 
ich möchte in der pulldown-menu aus jeder modulklasse $title angezeigt bekommen. wie kann ich dies bewerkstelligen?
phpbeginner ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.08.2006, 03:16  
Gast
 
Beiträge: n/a
Standard

Also erstma:
http://grammatik-ist.wischtisch.de/
Dann
http://richtig-fragen-ist.wischtisch.de/

So, nun zu deiner Frage:
Also erstmal hoff, ich dass ich deine Fragestellung gerafft habe:

Du hast eine Ordnerstruktur ungefähr wie diese:
Code:
/
-->klassen/
     |
     --> module/
     --> core/
[...]
Ja? ok, dann können wir ja ...

Dann machst du dich noch damit vertraut: http://suchen-ist.wischtisch.de/
und findest anschließend bei Google das: http://www.fabians-webdesign.de/d-we...e_dir_read.htm

dann machst du aus den public $title mal bitte const TITLE, damit du nicht zuerst eine Instanz erstellen musst, um an den Titel zu kommen.
und dann kommst du mit folgendem Code an den Titel:

PHP-Code:
eval('echo '.$name_der_klasse.'::TITLE;'); 
Das halt für alle Klassennamen, die du aus den Filenamen bekommst....
Natürlich musst du dafür sorgen, dass du die entsprechenden Klassen auch includest.
Am Besten über __autoload

Das Einbinden in das Menü kannst du denke ich selbst...

Jojo
 
Alt 22.08.2006, 11:13  
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 206
phpbeginner
Standard

danke eval ist das was ich gesucht habe, nur zeigt sie mir nichts an

mit static $title geht auch nicht
__________________
Ich lerne PHP und es macht mir Spass!
phpbeginner ist offline  
Alt 22.08.2006, 11:53  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

haha is des geil. Wischtisch ... ^^ u made my day

aber genug off topic. Zeig doch mal bischen relevanten Code @ phpbeginner und les dir auch mal die Seiten durch und verstehe und lerne

Wie stelle ich Fragen richtig?

MFG
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline  
Alt 22.08.2006, 12:05  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum ist der "title" nicht einfach der Name der Klasse? get_class() kann dabei helfen.

Das eval() halte ich an dieser Stelle auch für unnötig.
Einfach ein Objekt erstellen und dann $obj->getTitle(); aufrufen. Müsste man halt sicherstellen, dass die getTitle()-Methode auch existiert.

Nunja .. es gibt 1000 Möglichkeiten, wie du zum Ziel kommen kannst ..
imported_Ben ist offline  
Alt 22.08.2006, 13:15  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von Ben
Einfach ein Objekt erstellen und dann $obj->getTitle(); aufrufen. Müsste man halt sicherstellen, dass die getTitle()-Methode auch existiert.
Und dafür erstellst du ein Interface
PHP-Code:
interface IModule
{
    public function 
getTitle();
}

class 
Module implements IModule
{
    private 
$sTitle null;

    public function 
getTitle()
    {
       return 
$this->sTitle;
    }
}

class 
News extends Module implements IModule 
{
    public function 
__construct()
    {
        
$this->sTitle 'News';
    }

Wenn du nicht jedes Modul bauen willst, blos um an alle Titel zu kommen, musst du die Daten eben anders speichern. Anstatt der beschriebenen Klassen-Kostante würde ich eher ein statisches Klassen-Attribut nehmen (ich steh garmicht auf eval()). Andere Möglichkeiten wären noch, die Titel aus dem Dateinamen abzuleiten, falls diese in ASCII beschrieben werden können, oder Modul-Beschreibungen in XML oder so (ähnlich den Paket-Meta-Dateien von z.B. PEAR, Debian etc.), wobei das womöglich nicht unbedingt speicherschonender ist. Oder eine zentrale Registry, bei der die Module bei der Installaion angemeldet werden.

Basti

PS:
Konstruktoren müssen übrigens natürlich public sein, falls die Module keine Singleton-Klassen sind und über News::getInstance() o.Ä. gebaut werden sollen (was ich selten für eine gelungene Lösung halte - lieber eine Modul-Fabrik bauen, die ggf. bereits gebaute Objekte zurückgibt, anstatt neue zu bauen).
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klassen sinnvoll nutzen, Grundlegendes nikosch PHP-Fortgeschrittene 1 30.09.2006 22:08
Fragen zu Klassen Kein Genie PHP Tipps 2006 3 08.05.2006 11:25
Sessions an includete Klassen übergeben Dr_Enquinox PHP Tipps 2006 4 29.04.2006 10:25
mit html klassen definieren und in php ausgeben PHP-Fortgeschrittene 4 16.01.2006 10:31
[Erledigt] PHP 4 - Klassen? patr1k PHP Tipps 2005 10 18.11.2005 10:48
Klassen Fatal Error PHP Tipps 2005-2 3 19.10.2005 15:31
Community in Modulen programmieren Beitragsarchiv 3 29.07.2005 17:17
klassen und methoden anderer klassen in methoden.... PHP Tipps 2005 17 25.05.2005 09:46
Klassen PHP Tipps 2005 5 09.04.2005 18:51
Klassen in Klassen verwenden PHP Tipps 2005 5 23.02.2005 14:08
Modularer Aufbau, wie? PHP-Fortgeschrittene 26 31.01.2005 20:16
Klassen in PHP PHP Tipps 2004 4 12.08.2004 13:17
PHP Modul in Apache laden Server, Hosting und Workstations 4 09.08.2004 11:36
Klassen?! PHP Tipps 2004 14 03.06.2004 17:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pear modul bauen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.