php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.05.2008, 11:18  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard Referenzen Private Methoden.

Hallo,
ich habe bisher immer gelernt, referenzen sind identische speicherbereiche, nun habe ich mir gedacht, dass ich aus einer referenz auf private methoden aus einer "vaterklasse" zu greifen kann, php sieht dies jedoch ein wenig anders und erlaubt mir den zugriff nicht. Ich habe hier mal ein kleines Beispiel gescriptet.


PHP-Code:
<?php
class foo
{
    function 
newbar()
    {
        new 
bar($this);
    }
    
    private function 
privat()
    {
        echo 
'call private by refernce';
    }
}

class 
bar
{
    function 
__construct(foo &$foo)
    {
        
$foo->privat();
    }
}

$foo = new foo();
$foo->newbar();

?>
Wo genau liegt mein Denkfehler ?

Vielen Dank für eure Hilfe
notyyy ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.05.2008, 12:09  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

1. bar ist keine Kindklasse von foo (weil nicht mit extends abgeleitet). Allein die Instanziierung sagt nichts aus. Die schöne Instanz von bar landet auch sofort im Müll.
2. privat ist eben private. Kann also nur auf foo via $this aufgerufen werden. Du könntest genauso in Zeile 25 versuchen, $foo->privat(); aufzurufen.
3. Selbst aus einer echten Kindklasse mit $this kannst Du allenfalls protected Methoden aufrufen
nikosch ist offline   Mit Zitat antworten
Alt 28.05.2008, 12:31  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
bar ist keine Kindklasse von foo
ich verstehe genau warum

bar:: $foo->private();
und
foo:: $this->private();

nicht den selben inhalt haben, sie verweisen doch auf identische speicherzellen und können somit identisches ?

Zitat:
Kann also nur auf foo via $this aufgerufen werden.
tu ich das nicht quasi ?

PHP-Code:
$foo 2;
function 
editfoo(&$foo)
{
    
$foo 5;
}

editfoo($foo);
echo 
$foo
ich versuche doch nichts anderes als dies mit einem objekt ?
notyyy ist offline   Mit Zitat antworten
Alt 28.05.2008, 16:18  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Du hast mich falsch verstanden. Siehe Punkt 2.
Voraussetzung für Deine Idee wäre, dass wenigstens dies funktionieren würde:
PHP-Code:
<?
class foo
{
    private function 
privat()
    {
        echo 
'call private by refernce';
    }
}

$foo = new foo;
$foo->privat();
Was es nicht tut. Denn genau das ist das Konzept von private Methoden und Attributen.
.
nikosch ist offline   Mit Zitat antworten
Alt 29.05.2008, 06:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ist doch unabhaengig wo im Speicher die Instanz liegt, wichtig ist wer sie aufruft.
Zergling-new ist offline   Mit Zitat antworten
Alt 29.05.2008, 09:40  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Ist doch unabhaengig wo im Speicher die Instanz liegt, wichtig ist wer sie aufruft.
Okay, ich ging davon aus, dass eine referenz auf eine andere variable direkt verweist, und somit bar::foo auf foo::this verweist, womit foo und nicht bar das aufrufende objekt ist.

vielen dank, dass ihr mich aufgeklärt habt
notyyy 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Referenzen auf Objekte innerhalb eines Arrays PHP-Fortgeschrittene 6 31.08.2009 17:06
UML - Abstrakte und vererbte Methoden zwingend anzugeben? MaMo-Net Off-Topic Diskussionen 3 17.03.2008 06:04
GD-Spezialisten gesucht....wer kann helfen? rezix PHP Tipps 2008 12 26.02.2008 17:55
public, protected, private Funktionen ecomeback PHP Tipps 2007 10 21.08.2007 02:21
DAO - Methoden dh1sbg PHP-Fortgeschrittene 2 17.12.2006 17:52
[Erledigt] Private Mail ? Off-Topic Diskussionen 9 22.06.2006 09:11
Zugriff auf statische methoden oder konstanten nightfreak PHP-Fortgeschrittene 6 14.11.2005 16:56
Code Syntax Highlighting imported_Lumio PHP-Fortgeschrittene 9 16.08.2005 11:06
PHPBB - Private Stümper PHP Tipps 2005-2 7 22.06.2005 14:49
klassen und methoden anderer klassen in methoden.... PHP Tipps 2005 17 25.05.2005 09:46
Referenzen - Eure Meinung Off-Topic Diskussionen 6 11.12.2004 04:14
[Erledigt] Referenzen auf Objekte PHP-Fortgeschrittene 2 17.08.2004 11:08
Externe Referenzen in Klassen nutzen PHP Tipps 2004 3 16.08.2004 21:10
private Homepage Off-Topic Diskussionen 18 05.08.2004 20:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php methoden, methoden php, private methoden, methoden in php, php referenz auf methode, php private methode aufrufen, php private methode, private referenz, php methode referenz, private methode aufrufen, php referenz methode, referenzen auf, php methoden referenz, private methode php, php private aufrufen, referenz php methode, referenz private, private methode, referenzen in methoden, php private methoden

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