php.de

Zurück   php.de > php.de Intern > Off-Topic Diskussionen

Off-Topic Diskussionen Mach mal Pause vom Programmieren!

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 20.09.2008, 20:36  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard PHP Namespaces ab 5.3

Hi

Habe im neuen PHP Magazin gelesen, dass die seit langem "schmerzlich" vermissten Namespaces nunmehr ab Ver. 5.3 verfügbar sind. Hintergrund ist wohl, dass man duch Zuweisung eines Namensraums verhindern will, dass gleichnamige Funktionen, Klassen etc. Probleme bereiten.

Ich frage mich: Hat von Euch jemand auch schon Namespaces schmerzlich vermißt. Wenn ja, warum? Wie oft ist es bei Euch vorgekommen, dass Namensgebungen Probleme bereitet haben.

Mir ist das in 8 Jahren erst 2x bei Feldnamen in Datenbanken passiert.
Ansonsten, Ihr ahnt es wohl schon, kann ich gar nicht nachvollziehen, wo da die Brisanz liegen soll. Davon ab müßte das Problem auf der Ebene der Namesräume doch fortbestehen. Also statt zwei Funktione dann zwei Namensräume gleichen Namens, oder?
drsoong ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.09.2008, 20:46  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Ich benutze Namespaces immer, wenn ich mit Objektorientierung zu tun habe. Und damit es nicht zu Konflikten kommt, beinhalten alle Klassennamen immer den vollen Namespace:
PHP-Code:
class MyNamespace_MySubNamespace_MyClass
{

Auf Dauer kann das aber etwas umständlich werden, weshalb eine native Namespace-Unterstützung schon klasse wäre.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 20.09.2008, 20:48  
Erfahrener Benutzer
 
Benutzerbild von Montellese
 
Registriert seit: 30.07.2007
Beiträge: 541
Montellese befindet sich auf einem aufstrebenden Ast
Montellese eine Nachricht über MSN schicken
Standard

Naja Namespaces gibt es z.B. auch in Java oder C++ und manchmal machen sie schon Sinn, vor allem, wenn man noch irgendwelche Frameworks oder Libraries verwendet, die mit irgendwelchen Funktionen daherkommen. Wenn da sinnvolle Namen verwendet wurden, kann es dann schon mal passieren, dass man selber eine Funktion geschrieben hat, die genauso heisst (z.B. connect für Datenbanken oder sowas). Wenn man dann mit Namespaces arbeitet, kann die Library einfach alle Funktionen in einen Namespace reintun und dann besteht dieses Problem nicht mehr. Dafür muss man dann bei dem Funktionsaufruf mehr tippen

Ich hatte das Problem schon öfters bei JavaScript, wenn ich Frameworks wie PrototypeJS oder Mootools verwendet habe. Ich hatte mir früher mal selber ne $() Funktion geschrieben (aus Bequemlichkeit) und als ich dann mal PrototypeJS verwendet habe, habe ich vergessen meine $() Funktion zu löschen. Und dann hab ich lange gesucht, bis ich gerafft habe, dass er meine alte (bei weitem nicht so mächtige und vielseitige) Funktion verwendet anstatt die von PrototypeJS.
Montellese ist offline   Mit Zitat antworten
Alt 20.09.2008, 20:55  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Außerdem schaffen Namespaces (bzw. Packages) eine Menge Übersicht. Was sagt mehr aus?

Das
PHP-Code:
class Request
{
}

class 
RSSReader
{

oder das
PHP-Code:
class Core_CommandControl_Request
{
}

class 
Modules_XML_RSSReader
{

Beim Zweiten weißt du sofort, wo die Klasse einzuordnen ist.
Außerdem können Namespaces PEAR enorm weiterhelfen, da dort alle Klassen ebenfalls in Namespaces einsortiert sind.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 20.09.2008, 21:41  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard Aha

O.K. ein Punkt ist also Übersicht.

Habe gerade mal angetestet,was passiert , wenn ich mir selber 'ne substr() schreibe.

"cannot redeclare substr()" heißt es dann.

Ja gut, dann sage ich "Ach ja, stimmt ja!" benenne das Ding in my_substr um und gut ist.

Irgendwie fehlt mir aber noch etwas, was erklärt, warum Namespaces schmerzlich vermißt wurden.
drsoong ist offline   Mit Zitat antworten
Alt 20.09.2008, 21:47  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Wurde schon alles genannt.
  • nicht jede Methode ist so gut bekannt wie substr(). Vor allem, wenn es sich um Frameworks handelt, kann es schnell unhandlich werden, wenn alle Klassen und Funktionen im selben Namespace liegen.
  • es schafft übersichtlichkeit.
  • benutzt ein System Fremdkomponenten (Module) und verwenden diese Module gleiche Namen, so führt das unweigerlich zu einem Konflikt, der im Voraus nicht abzusehen war.
  • Zwangahftes Umbennen einer Funktion führt oft zu unansehnlichen Namen.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 20.09.2008, 21:56  
Erfahrener Benutzer
 
Benutzerbild von drsoong
 
Registriert seit: 05.08.2008
Beiträge: 1.127
drsoong wird schon bald berühmt werden
Standard O.k., o.k.

Schon wieder Danke an Manko10. Soweit verstanden. Es scheint, der Grad der Schmerzempfindlichkeit spielt wohl auch eine Rolle :wink:
drsoong ist offline   Mit Zitat antworten
Alt 20.09.2008, 21:58  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Zitat:
Es scheint, der Grad der Schmerzempfindlichkeit spielt wohl auch eine Rolle
Warum schreiben wir unsere Programme eigentlich nicht alle in Assembler? Da hat auch noch nie jemand Namespaces vermisst.

EDIT:
In wiefern hat das jetzt eigentlich mit dem Wiki zu tun?
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems

Geändert von Manko10 (20.09.2008 um 22:04 Uhr).
Manko10 ist offline   Mit Zitat antworten
Alt 22.09.2008, 09:55  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Also Namenspaces sind ne verdammt geile Sache.
Ich hab mir die 5.3_alpha2 extra auf n Testserver kompiliert weil ich damit schon ein Webinterface entwickle ... läuft schon sehr stabil bis auf ein paar Kleinigkeiten aber nicht weiter schlimm.
Ich hab zuvor immer diese Klassen mit Sonderzeichen getrennt gehasst ... mit Namespaces kann man viel besser die Package-Zugehörigkeit darstellen als mit diesen Klassennamen.
Zumal es bei einer Namensänderung ne Menge Schreibarbeit erparrt.
Von daher eine der beste Änderungen seit langen.
HStev ist offline   Mit Zitat antworten
Alt 23.09.2008, 16:53  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

namespaces haben nicht nur den vorteil der zuordnung im code, sondern auch den der ordnung durch autoload. so kann ich meine namespaces schön in verschiedene ordner mit der bezeichnung der klasse als dateiname speichern.

Zitat:
-folder namespace
-- class.test.php
-- class.super.php
durch diesen code sollte z.b. dann die ./namespace/class.test.php automatisch eingebunden werden>

PHP-Code:
use namespace;
$class=new test
die function __autoload() bekommt dann wohl ein array und kann entsprechend versuchen die klasse test zu laden.

so, jetzt fehlt noch, das alles von php in klassen gepackt wird und die dann in namespaces. yeah.

PHP-Code:
$object=new php::variable_types::object;
$string=new php::variable_types::string('asdf');
$integer=new php::variable_types::integer('1');
$float=new php::variable_types::float('1.1');
$null=new php::variable_types::null;
$boolean=new php::variable_types::boolean('1'); 
resultiert dann darin:

PHP-Code:
echo $string->part(new php::variable_types::integer('0'),new php::variable_types::integer('5')); 
(mit use wärs natürlich kürzer)
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Antwort


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php namespace, php namespaces, namespace php, php 5.3 namespaces, php5 namespace, namespaces php, php5 namespaces, php 5.3 namespace, php use namespace, php 5 namespace, php 5 namespaces, php namespace use, namespaces in php, php namespace version, namespaces php 5.3, namespace php 5.3, php class namespace, php namespace class, namespace php5, php klassen namespace

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:32 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