php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.07.2009, 11:12  
Neuer Benutzer
 
Registriert seit: 24.07.2009
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Jausenbrot befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] __autoload, Eclipse PDT, globale Variablen und Dateinamen

Hallo Leute,

ich bin zwar in PHP neu, hab aber schon viel Erfahrung in OOP.
Ich lege meine Klassen wie folgt an: htdocs/<namespace>/<unternamespace>/<klassenname>.php

Nun zu meinen Fragen:
Ich navigiere zu http://localhost/user/1 was durch mod_rewrite zu http://localhost/index.php?mod=user&id=1
In meiner Index.php habe ich eine autoload:
PHP-Code:
function __autoload($class){
      require_once 
$class.'.php';

Wenn ich jetzt
PHP-Code:
$user = new User($_GET['id']); 
mache, lädt er automatisch die User.php.
Wenn ich jetzt in der Klasse User von einer anderen Klasse erbe z.B.
PHP-Code:
class User extends BaseClass{} 
, benötige ich dann hier auch eine __autoload?

Und wie mache ich es mit den Dateinamen? Ehrlichgesagt will ich nicht unbedingt auf PascalCase verzichten, oder würde es reichen, die Klasse User in eine user.php zu speichern und die __autoload wie folgt aussehen zu lassen:
PHP-Code:
function __autoload($class){
      require_once 
strtolower($class).'.php';

Würde das prinzipiell funktionieren? Sieht halt dann nicht mehr so schön aus, aber man kann icht alles haben.
Ferner hab ich noch n Problem mit Eclipse PDT, welches ich zur Entwicklung verwende: wenn ich $this-> verwende und durch STRG+Space das Code Completion Fenster öffnen will, steht links unten immer "No completions available.", obwohl ich in der Klasse Attribute und Methoden habe und noch welche von Oberklassen/Interfaces erbe.
Ist das ein allgemeiner Fehler von PDT? Weil auf Code Completion möchte ich nicht unbedingt verzichten. Mir ist auch Klar, dass es aufgrund der schwachen Typisierung bei einem Objekt nicht funktioniert, aber bei $this hätte ich es schon erwartet.

Ferner würde mich noch intressieren, wie es mit globalen Variablen aussieht. Da ich z.B. ein PDO-Objekt für die ganze Anwendung verwende, wäre es etwas mühsam, das Objekt bei jedem Methodenaufruf mitzugeben.

Das wär erstmal alles, ich hoffe, ihr könnt mir helfen

lg Jausenbrot

Geändert von Jausenbrot (24.07.2009 um 11:14 Uhr). Grund: [INDENT] funzt nicht im [PHP]Tag^^
Jausenbrot ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.07.2009, 11:27  
Erfahrener Benutzer
 
Registriert seit: 27.06.2009
Beiträge: 498
PHP-Kenntnisse:
Anfänger
cetalian sorgt für eine eindrucksvolle Atmosphärecetalian sorgt für eine eindrucksvolle Atmosphäre
Standard

Versuch mal bei Eclipse PHPDoc Style Kommentare zu verfassen (einfach /** Enter), danach klappt mein Code Completion immer super
cetalian ist offline  
Alt 24.07.2009, 12:13  
Neuer Benutzer
 
Registriert seit: 24.07.2009
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Jausenbrot befindet sich auf einem aufstrebenden Ast
Standard

Hallo cetalian,

ich verwende bereits PHPDoc kommentare, wie gesagt bin ich erfahren in OOP und ohne Doku geht da gar nix
Das komische ist ja, dass nicht mal die Code Completion bei $this funktioniert, was aber auch ohne PHPDoc funktionieren müsste.

lg Jausenbrot
Jausenbrot ist offline  
Alt 24.07.2009, 12:21  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.731
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

PHP-Code:
class Foo
{
    protected 
$_bar;
    
    public function 
__construct()
    {
        
$this->
    }

An der Stelle solltest du CC bekommen. Falls nicht, such mal in den Preferences nach "Code Assist" und guck, was da so eingestellt ist.
mermshaus ist gerade online  
Alt 24.07.2009, 12:32  
Neuer Benutzer
 
Registriert seit: 24.07.2009
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Jausenbrot befindet sich auf einem aufstrebenden Ast
Standard

Eben da bekomm ich keine Code Completion :/



Glaub nicht, dass da was falsch ist.

lg Jausenbrot


Edit: Das intressante ist ja, wenn ich ein $ mach, schlägt es mir $this vor, wenn ich jetzt $this-> mach, schlägts mir nichts mehr vor :/

Geändert von Jausenbrot (24.07.2009 um 12:36 Uhr). Grund: edit
Jausenbrot ist offline  
Alt 24.07.2009, 13:17  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Speicher mal und starte Eclipse neu, manchmal muss das Projekt neu "gebuilded" werden.

Und dann probier nach dem -> mal STRG + Leertaste.
Flor1an ist offline  
Alt 24.07.2009, 14:08  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Zitat:
Zitat von Jausenbrot Beitrag anzeigen
Ferner würde mich noch intressieren, wie es mit globalen Variablen aussieht. Da ich z.B. ein PDO-Objekt für die ganze Anwendung verwende, wäre es etwas mühsam, das Objekt bei jedem Methodenaufruf mitzugeben.
Wenn du OO programmierst, hoffe ich, dass du nicht zu globalen Variabeln greifen wirst, denn dafür gibt es ja verschiedene OO-Ansätze, die es dir ermöglichen, auf ein einzelnes Objekt überall zuzugreifen.
(Singleton, Registry...)
__________________
Phoscur ist offline  
Alt 24.07.2009, 18:16  
Neuer Benutzer
 
Registriert seit: 24.07.2009
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
Jausenbrot befindet sich auf einem aufstrebenden Ast
Standard

Hast recht, wollte ich sogar schon verwenden, nur irgendwie hab ich das wieder verworfen (Kopf->Tisch)
Wie sieht das jetzt mit __autoload aus?
Bin da aus der Doku nicht wirklich schlau geworden.

lg Jausenbrot
Jausenbrot ist offline  
Alt 24.07.2009, 19:04  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wie du deine Klasse bennenst und die dazugehörige Datei ist egal. Du kannst auch den Klassennamen auseinander rupfen und entsprechend deinen Konventionen formatieren und die Datei dann einbinden.

Du brauchst für jede Klasse die nicht über include/require eingebunden wird die Möglichkeit über autoload diese Klasse zu laden.
Flor1an ist offline  
Alt 24.07.2009, 19:20  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wo liegt denn deine User.php und wo deine BaseClass?

Du kannst auch CamelCase mit RegExp auseinanderrupfen:
PHP-Code:
<?php
$string   
"thisIsCamelCased";
$splitter preg_split("/(?=[A-Z])/"$string); // look behind assertion
$splitter array_map("ucfirst"$splitter);
$filename implode(DIRECTORY_SEPARATOR$splitter) . ".php"// This/Is/Camel/Cased.php
echo $filename;
?>
__________________
"Nuschel ich?" - "Was?"
Chriz 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
globale Variablen und OOP Timo Trallala PHP Tipps 2006 3 28.03.2006 12:02
Globale Variablen PHP Tipps 2005-2 15 26.07.2005 12:26
globale Variablen PHP Tipps 2005 10 27.04.2005 12:20
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
globale variablen PHP Tipps 2004 2 25.09.2004 20:47
Globale Variablen Beatbox PHP Tipps 2004 10 10.09.2004 17:55
Globale Variablen PHP Tipps 2004 3 08.07.2004 00:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
eclipse globale variablen, http://www.php.de/php-einsteiger/57415-erledigt-__autoload-eclipse-pdt-globale-variablen-und-dateinamen.html, deutsche dokumentation in eclipse pdt einbinden, globale variable eclipse, eclipse variable, eclipse pdt namespace, pdt \no completions available\, eclipse pdt macht mit strg nicht methoden auf, pdt code completion, eclipse public variable in neuer klasse aufrufen, eclipse php singleton code completion, eclipse pdt deutsche dokumentation einbinden, eclipse php completition offline doku, phpeclipse code completion function, eclipse no completions available, eclipse pdt code completion, no completions available, globale variablen übersicht eclipse, eclipse globale variable im ganzen code ändern, eclipse code completion 3.7.2

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