Hi.
Was meinst Du denn mit "eine URL haben"?
Naja, eben die URL, die der Browser anfordert, die ist ja im PHP via $_SERVER Variable verfügbar. Wieso ist die Begrifflichkeit "eine URL haben" denn schon wieder verkehrt? :-(
Ein URL ist eine Zeichenkette. Eine Zeichenkette, die eine Ressource identifiziert. Und ein PHP-Skript, das vom Server aufgerufen wird, um diese Ressource zu produzieren und auszuliefern, interessiert sich in den allermeisten Faellen nicht dafuer, wie der aufgerufene URL ausgesehen hat.
Es gibt sicher Ausnahmen davon. Aber es war (mir) nicht klar, dass (und warum) Dein PHP-Skript sich fuer den aufgerufenen URL interessiert. Daher war das eine echte Frage. Und das "warum" ist mir immer noch nicht klar.
Hmm, also jede Anfrage zu dem Server läuft via htaccess immer über die index.php. Und für jeden URL-Parameter (also das Zeugs zwischen den /) wird nen eigenes Script aufgeführt.
Oder um genauer zu sein: Für jede mögliche Kombination der URL-Parameter werden bestimmte Scripte ausgeführt, bspw.
"MeineGalerie/MeineUrlaubsbilder"
Da wird dann das Script ausgeführt das die Urlaubsbilder einliest und in die HTMLGalerieVorlage einbindet.
"MeineGalerie/MeineMalereien"
Das Liest dann Malereien aus der Datenbank und bindet die in die HTMLGalerieVorlage ein.
Also ich bestimme über die URL schlicht den Inhalt der Seite.
Das ist doch nichts ungewöhnliches, oder?
Aber ich dachte immer eine Abstraktion ist die Wirklichkeit in ein Objekt hineingepackt,
Ok, dann hoer jetzt bitte auf, das zu denken. :-)
Ok, ich versuchs, aber alte Gewohnheiten schleift man meist noch lange hinter sich her... :-)
Eine Abstraktion ist... ich versuchs mal: das Erstellen von Code (seien es Funktionen, Klassen, ...), der nicht nur eine ganz konkrete Aufgabe erfuellt, sondern so gestaltet ist, dass er flexibel fuer verschiedene, artverwandte Probleme eingesetzt werden kann.
Mal ein ganz einfaches Beispiel:
Stell Dir eine Email-Klasse vor, mit der Du aus Deinen PHP-Skripten heraus automatisch Emails versenden kannst, etwa an Kunden. (Oder auch eine Email-Funktion, was geht hier jetzt nicht um Klassen an sich).Dann moechtest Du vielleictht, dass beim Abschicken der Email automatisch ein Email-Kopf mit Deinem Logo o.ae. eingebunden wird. Jetzt waere es schlecht, wenn der Email-Kopf hart kodiert in der Funktion steht, in der Art
$emailText = "<h1>www.example.com - automatische Email</h1>" . $emailText;
Dann kannst Du die Funktion naemlich nicht mehr gebrauchen, wenn Du
- entscheidest, auf Plaintext-Emails umzusteigen (was wuenschenswert waere),
- noch ne Website erstellst und von dort auch Emails verschicken willst, ohne diesen Header,
- Dein Logo aenderst.
Hmm, ok, ich befürchte da muss ich mich erst schlau machen was Plaintext ist, und wie E-Mails überhaupt aufgebaut sind.
Solche Dinge sollten aber nicht dazu fuehren, dass Du Deinen Programm-Code an 37 Stellen aendern musst. Also: Deine Email-Klasse sollte
- Dir erlauben, den Mime Type (text oder html) als Parameter zu setzen
- einen HTML-Kopf als Template einlesen, wenn gewuenscht
damit Du bis in alle Ewigkeit alle Deine Emails mit dieser Klasse, d.h. demselben Programm-Code, versenden kannst und lediglich andere Templates zur Verfuegung stellen oder vielleicht noch ein paar Konstanten aendern musst.
Das waere eine Abstraktion. Code unabhaengig von konkreten Umgebungsbedingungen schreiben.
Ok.
Das true am Ende bedeutet nur das eben genau diese URL jetzt gültig ist, bzw. aufgerufen wird.
*wurde*, nicht wird (und: ein URL, also ein *String*, s.o.), wird nicht aufgerufen). Der Client hat mittels des URL die Ressource aufgerufen/angefordert, der Server hat das PHP-Skript gestartet. Alles laengst geschehen, alles ist in geordneten Bahnen. Wozu musst Du das jetzt extra im Skript behandeln?
Wegen diesen einzelnen Scriptaufrufen, die Parameter der URL bestimmen den Seiteninhalt (URL-Parameter = Das Zeuch zwischen den / - k.a. wie man die nennt :-) )
Das ist die URL die vom Cliet kommt. Ich wollte aber versuchen das Skript unabhängig davon, von wo der Aufruf kommt zu gestalten. So das es am Ende von PHP, Client via User oder AJAX aufgerufen werden kann. Eben fast wie eine Funktion :-)
Ok.
Also das ganze soll dann so funktionieren das ich im PHP ein Objekt habe das alle aufrufbaren Seiten enthält.
Mein oben erzeugtes Objekt wird dann mit dem "Systemobjekt" verglichen, ob es die aufgerufene Webseite dort überhaupt existiert.
Tut sie das, wird die Seite aufgerufen und alle notwendigen PHP-Skripte dazu ebenfalls.
Existiert die aufgerufene Seite nicht, dann kommt eben ne 404-Seite.Verstehe ich nicht. Das erledigt der Server doch fuer Dich, oder nicht? Er ruft das fuer die angeforderte Seite passende Skript auf. Sonst haettest Du edn URL ja nicht in der _SERVER-Variable zur Verfuegung.
Hmm, ok, ich habe das immer über htaccess gemacht, hab erst jetzt realisiert das, dass auch in $_SERVER drinnen steht.
Hast du eventuell einen Tipp wie man das besser lösen / gestalten könnte?
Was denn jetzt eigentlich? :-)
Meine Sache mit der dollen Galerie und dem Blog :-)
Ich hab keine Ahnung, wie Du es bisher loest. Das, was wir hier besprochen haben, hat weder mit ner Galerie noch mit nem Blog irgendwas zu tun. Oder?
Ich befürchte ich muss die Sache eh nochmal neu überdenken. Von daher sind da wohl weitere Überlegungen in diese Richtung eher verwirrend :-(
Hör mal, um das schöne selfhtml-Forum nicht durch Grundsatzdebatten zu verschandeln (Was ich befürchte was wir nachdem du diesen Beitrag gelesen hast tun werden :-) ), wollen wir nicht via ICQ, Mail oder irgendwas anderes uns verständigen?
Lass uns ruhig hier bleiben, fuer Diskussionen ist das Forum doch da.
Ok, wie du meinst.
Vielen lieben Danke übrigens für deine engelsgleiche Geduld :-)
Ich habe hier auch noch einmal ein bisschen was ausfürchlicher gechrieben: http://forum.de.selfhtml.org/?t=202100&m=1365269
Viele Gruesse,
der Bademeister