php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.08.2004, 12:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 529
DutziMan befindet sich auf einem aufstrebenden Ast
Standard OOP: $this & ::

Ich habe gestern Abend mal etwas ausprobiert.
Ich habe eine Klasse Main.
PHP-Code:
<?php

require_once 'Main.php';

$Main =& new Main;

?>
Intern wird auf Methoden mittels :: zugegriffen, d. h. so:
PHP-Code:
<?php

Main
::doSth();

?>
Da ich ein Objekt habe kann ich auch $this nutzen.
Wenn ich jetzt allerdings extern mittels :: auf eine Methode zugreife,
kriege ich von jedem $this in der aufgerufenen Methode eine Fehlermeldung.
Zitat:
Undefined Variable [...]
Klar, kein Objekt, kein $this.

Allerdings arbeitet Zweiteres doch auf der gleichen Ebene wie Ersteres, nämlich nicht in einer Instanz, sondern in der Klassendefinition.
Ich habe ja am Anfang keine richtige Instanz erzeugt, sondern eine, die in der Klassendefinition arbeitet.
Ersteres hat ein Objekt, folglich müsste Zweiteres ebenfalls ein Objekt haben.
Oder braucht Zweiteres auch einen "Bezug" (wie bei Ersterem) zum Objekt?
DutziMan ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.08.2004, 12:46  
Gast
 
Beiträge: n/a
Standard

Erstmal wäre wichtig PHP 4 oder 5? Da gibts entscheidene Veränderungen..

Allgemein:
stell dir vor ich wäre eine Klasse
$this ist ein Verweis auf sich selbst. d.h. Wenn ich ein Object wäre dann könnte ich mich auch mit $this ansprechen. Wenn du aber nur eine meiner Methoden ansprichst, weiss diese Methode nicht wer ich bin.


edit: Ich hab mir meinen Satz nochmal durchgelesen, ein bisl verquert
Wenn du die Methoden eines Objektes ansprichst ist $this verfügbar da man sich im Objekt aufhält.
Wenn du die Methoden einer Klasse ansprichst bist du nicht innerhalb eines objektes.
Das es ein Objekt mit der Klasse Main gibt ist ja irrelevant...

gruß
 
Alt 25.08.2004, 12:52  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 529
DutziMan befindet sich auf einem aufstrebenden Ast
Standard

PHP 4.3.8.
Ja, das ist mir klar.
Ich habe allerdings kein stinknormales Objekt gemacht, sondern eine Referenz, die auf die Klassendefinition zeigt.
Wenn dann innerhalb dieses Pseudo-Objekts mittels $this Eigenschaften definiert werden, werden sie das in der Klassendefinition.

Also müsste prinzipiell die ohne Objekt aufgerufene Methode auch darauf zugreifen können.

Wenn du verstehst, was ich meine
DutziMan ist offline  
Alt 25.08.2004, 12:58  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von DutziMan
PHP 4.3.8.
Ja, das ist mir klar.
Ich habe allerdings kein stinknormales Objekt gemacht, sondern eine Referenz, die auf die Klassendefinition zeigt.
Wenn dann innerhalb dieses Pseudo-Objekts mittels $this Eigenschaften definiert werden, werden sie das in der Klassendefinition.

Also müsste prinzipiell die ohne Objekt aufgerufene Methode auch darauf zugreifen können.

Wenn du verstehst, was ich meine
Referenz hin oder her. woher soll die Klasse den Bezug zur Referenz nehmen?
PHP ist doch nicht innteligend und weiss was du meinst
 
Alt 25.08.2004, 13:04  
Gast
 
Beiträge: n/a
Standard

Referenzen sind ja keine Zeiger i.e.s. sondern sie erlauben dir, dass 2 Variablen auf den selben inhalt zeigen.

PHP-Code:
<?php 

require_once 'Main.php'

$Main =& new Main

$subMain =& find_var ($Main);

$subMain->doSth()
?>

BTW: traut sich jetzt niemand mehr ins Profi-Forum zu posten? :wink:
 
Alt 25.08.2004, 13:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

wenn du mittels :: auf eine methode zugreifst, wird sie als statische methode anerkannt. statische methoden haben kein bezug zu ihrem objekt, sondern lediglich zur klassen bzw. anderen statischen methoden.
$this ist nur innerhalb einer objektinstanz möglich.

ich hoffe, das war so weit verständlich!?

ka, ob das deine frage beantwortet, weil ich keine eindeutige frage gefunden habe.

Zitat:
Zitat von shoryuken
BTW: traut sich jetzt niemand mehr ins Profi-Forum zu posten? :wink:
doch, ich. bin aber gerade zu faul. wird später kommen.
Quadaptor ist offline  
Alt 25.08.2004, 13:22  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Quadaptor
wenn du mittels :: auf eine methode zugreifst, wird sie als statische methode anerkannt. statische methoden haben kein bezug zu ihrem objekt, sondern lediglich zur klassen bzw. anderen statischen methoden.
$this ist nur innerhalb einer objektinstanz möglich.

ich hoffe, das war so weit verständlich!?
So hätte ich das auch verstanden, aber ich werd ja (zum Glück) auch nicht fürs reden bezahlt
 
Alt 25.08.2004, 13:37  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 529
DutziMan befindet sich auf einem aufstrebenden Ast
Standard

Gut, dann weiß ich jetzt wieder ein bisschen mehr über PHP

Danke für die Antworten!
DutziMan ist offline  
Alt 25.08.2004, 14:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Falls du dich etwas in die Welt der OOP reinlesen mächtest, kann ich dir folgendes Seite empfehlen:
http://java.sun.com/docs/books/tutorial/java/concepts/

Die Seite bezieht sich zwar auf die OOP von Java, allerdings ist es bei PHP(5) ähnlich.
Quadaptor ist offline  
Alt 25.08.2004, 14:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 529
DutziMan befindet sich auf einem aufstrebenden Ast
Standard

OOP ist mir keinesfalls neu
Es war halt nur diese eine Sache, bei der ich unsicher war
DutziMan ist offline  
Thema geschlossen


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
Variable in $this Variable der Klasse benutzen PHP Tipps 2006 5 03.05.2006 20:04
Fatal error: Using $this when not PHP Tipps 2006 4 08.03.2006 08:20
Seltsames $this :-| Finkman PHP Tipps 2006 2 03.02.2006 12:56
Unit-Tests Zergling-new Off-Topic Diskussionen 1 23.12.2005 00:13
Denkfehler? Objektorientierte Programmierung... PHP Tipps 2007 17 23.11.2005 22:06
Using $this when not in object context in PHP 5 und nicht 4 PHP Tipps 2005-2 2 11.08.2005 16:30
Objekt-Reassign mit $this Andreas PHP-Fortgeschrittene 0 01.08.2005 10:50
Problem mit Klassen und Objekten... (PHP 4.3.3 spezifisch??) PHP Tipps 2005 18 01.02.2005 14:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
oop this, oop $this, warum kein $this in php 4, oop \this\, oop this., php \$this =&\, this&php, this oop, $this-& php, oop \$this\ in php, php $this &$this, $this oop, php objektinstanz notice: undefined variable:

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