php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-12-2006, 15:28
nic_12
 Newbie
Links : Onlinestatus : nic_12 ist offline
Registriert seit: Jan 2006
Beiträge: 29
nic_12 ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Funktion] In Klassen funktionen includieren

Hallo zusammen,

habe folgendes Problem

Also ich habe eine PHP-Datei welche eine Webdav-Klasse beschreibt. Darin möchte ich mittels include die function.inc einbinden.
Erzeuge ich eine Instanz der Klasse, wo die entpsrechenden Zeilen enthalten sind, findet er mir die Funktionen leider nicht.


setze in der Webdav.php deswegen des PFAD mit
define("FUNCTION_INCLUDE_DIR","/var/www/localhost/htdocs/DB_Webdav/include/");

binde danach die Datei ganz oben so ein
include(FUNCTION_INCLUDE_DIR."function.inc");

und dachte nun, dass ich auf die funktionen in der function.inc zugreifen kann. Einfach mit dem Aufruf der entpsrechenden Funktion

bsp.:

$klasse = new Webdav();
$Klasse->Ausgabe(); //diese steht z.B. in der function.inc
bzw. steht in der Webdav.php

$this->Ausgabe();

Damit findet er mir die Funktion leider nicht

Was mache ich falsch?

Mit Zitat antworten
  #2 (permalink)  
Alt 04-12-2006, 15:39
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Verstehe ich das richtig, dass die Funktion Ausgabe sich in der functions.inc befindet, du sie aber mit $klasse->Ausgabe als Methode der Klasse Webdav ansprichst? Wenn das der Fall ist, dann ist der Fehler klar:
Du bindest die functions.inc zwar in der Klasse Webdav ein, trotzdem sind die darin enthaltenen Funktionen natürlich keine Methoden der Klasse Webdav und können somit auch nicht über das Objekt angesprochen werden.
Mit Zitat antworten
  #3 (permalink)  
Alt 04-12-2006, 15:46
nic_12
 Newbie
Links : Onlinestatus : nic_12 ist offline
Registriert seit: Jan 2006
Beiträge: 29
nic_12 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja korrekt, aber wenn ich die function.inc mit in der Webdav-Klasse als Defintion includiere, wäre für mein Verständnis die Ausgabe Funktion als Klassenmethode für das Objekt $Klasse (in diesen Fall) definiert oder?

D.h. ich will meine Klassendefinition nur aufteilen,mehr soll es nicht sein.
Also ich schreibe die Funktion Ausgabe nicht mit in die Datei Webdav.php sondern in die function.inc. Ansonsten, wenn ich die Ausgabe in der Datei Webdav.php stehen habe funktioniert es. Binde ich in der Datei Webdav.php die function.inc ein findet er die Funktion Ausgabe nicht.

Gibt es da eine Lösung, ohne eine neue Klasse zu erstellen.
Mit Zitat antworten
  #4 (permalink)  
Alt 04-12-2006, 15:53
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, so wie du dir das vorstellst, funktioniert es nicht. Mit error_reporting(E_ALL) solltest du eigentlich eine Fehlermeldung à la
Code:
Fatal error: Call to undefined method...
, bekommen ... und schon wärst du auf den Fehler gekommen.
Mit Zitat antworten
  #5 (permalink)  
Alt 04-12-2006, 16:01
nic_12
 Newbie
Links : Onlinestatus : nic_12 ist offline
Registriert seit: Jan 2006
Beiträge: 29
nic_12 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

na genau die Fehlermeldung erhalte ich ja, mit der Mittellung, das die Methode nicht existiert. Also bleibt mir nur die Variante übrig den Code so unübersichtlich,wie er jetzt ist zu belassen. Oder ein neues Klassenkonzept zu entwickeln



Danke nochmal

nic12
Mit Zitat antworten
  #6 (permalink)  
Alt 04-12-2006, 16:06
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bitte
Inwiefern unübersichtlich? Wenn ich dich richtig verstanden habe, dann hast du versucht, einige Methoden der Klasse in einer seperaten Datei auszulagern, um diese übersichtlicher zu halten, oder? Ich frage mich aber, was du davon hast, wenn du dafür mehrere Dateien durchwühlen musst, um die komplette Klasse samt ihrer Methoden vor dir zu haben.
Mit Zitat antworten
  #7 (permalink)  
Alt 04-12-2006, 16:17
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich hätte eine "frickellösung" anzubieten:

methodenüberladung mit __call(). also innerhalb von call die funktions-datei includen und dann deren (globale) php-funktion aufrufen (ist dann aber auch keine klassenmethode).
aber ob das sinnvoll ist
Mit Zitat antworten
  #8 (permalink)  
Alt 04-12-2006, 16:54
nic_12
 Newbie
Links : Onlinestatus : nic_12 ist offline
Registriert seit: Jan 2006
Beiträge: 29
nic_12 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Na wenn die Klasse dann schon an die 1000Zeilen Quellcode besitzt, dann denke ich ist es günstig aufzuteilen. Denke aber auch dass es Geschmackssache ist. Naja werde mal sehen wie ich das löse.

Mit dem überschreiben, da kenn ich mich nicht so aus( gerade bei PHP).

nic12
Mit Zitat antworten
  #9 (permalink)  
Alt 04-12-2006, 16:54
Alrik
 Member
Links : Onlinestatus : Alrik ist offline
Registriert seit: Jan 2006
Beiträge: 304
Alrik ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

Einige IDEs unterstützen "Klappmenüs", mit welchen Funktionen/Methoden etc zusammengefalten werden können. Dies ist z.B. beim Zend Studio der Fall.
Du siehst dann nur noch eine Zeile für deine Methode und es wird übersichtlicher beim Arbeiten.

Gruß Thomas
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:48 Uhr.