php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2007, 01:28  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard statische Aufrufe, Ableitungen

Wie kann ich (egal wie!) in der Eltern-Klasse Code hinterlegen, der in einer Kind-Klasse verwendet, bei einem statischen Aufruf den Namen der Kind-Klasse liefert?

Bei instanzierten Objekten wäre in der Eltern-Klasse get_class($this) möglich, aber bei einem statischen Aufruf?

PHP-Code:
<?php
class P
{
  public static function 
factory()
  {
     return new 
self(); // instanziert immer nur ein Objekt der eigenen (self eben;) klasse
  
}
}
class 
extends P
{
}

$object C::factory(); // P-Objekt, will aber ein C-Objekt.
?>
Ideen?
Zergling-new ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.11.2007, 16:51  
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

Oh mann, das Problem hatte ich auch ständig. Nach diesem Test habe ich meine Denkweise über statische Variablen und Zugriff darauf aus vererbten statischen Methoden einfach geändert und werde das nie wieder versuchen umzusetzen (ich vermute, darauf wird Deine Frage hinauslaufen):

PHP-Code:
<pre><?


class a
  
{
  public static 
$thestatic 5;

  static function 
show ()
    {
    echo 
self::$thestatic;
    }

  static function 
show2 ()
    {
    eval (
'echo ' get_class () . '::$thestatic;');
    }

  static function 
show3 ()
    {
    eval (
'echo ' get_class () . '::$thestatic;');
    eval (
'echo ' __CLASS__    '::$thestatic;');
    }
  }

class 
extends a
  
{
  public static 
$thestatic 4;

  static function 
show2 ()
    {
    eval (
'echo ' get_class () . '::$thestatic;');
    }
  }
  
  
a::show ();
b::show ();
?> 
<?
echo a::$thestatic;
echo 
b::$thestatic;
?> 
<?
b
::$thestatic 3;
a::show2 ();
b::show2 ();
?> 
<?
a
::show3 ();
b::show3 ();
Code:
55 
54 
53 
5555
self, __CLASS__, get_class (), alles ein Aufwasch. Es sei denn, Du definierst für/in jedes/r abgeleitete/n Kindklasse wenigstens eine Methode, die den eigenen Klassennamen bestimmt. Wie show2 () im obigen Beispiel.
.
nikosch ist offline   Mit Zitat antworten
Alt 01.12.2007, 13:36  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
P-Objekt, will aber ein C-Objekt
*will aber will aber WILL ABER* :P

sorry, musste jetzt sein.

in php ist die einzigste OBJECT referenzierung $this. alles andere sind referenzierungen zu den klassen. somit ist das ein ding der unmöglichkeit....
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 01.12.2007, 15:59  
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

Durch new würde er schon ein Objekt erhalten, wenn die Factory nur den richtigen Namen erhielte.
nikosch ist offline   Mit Zitat antworten
Alt 01.12.2007, 17:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Muss ich wohl auf PHP 5.3 oder PHP 6 warten, da soll es ja soetwas geben.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.12.2007, 18:31  
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

Was genau? Vererbbare statische Zugriffe?
nikosch ist offline   Mit Zitat antworten
Alt 01.12.2007, 18:37  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Magazin 1.08/Seite 9:
Zitat:
Mit PHP 5.3 werden Sie statt self das Schlüsselwort static verwenden können, das durch die Klasse ersetzt wird, in der der Code ausgeführt wird. Es handelt sich damit also um eine statische Version des $this-Zeigers.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.12.2007, 18:40  
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

Aha, interessant. Aber ausgerechnet static? Leicht überfrachtet das Wort.
nikosch ist offline   Mit Zitat antworten
Alt 01.12.2007, 18:47  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ja "this" wäre toll gewesen
Zergling-new ist offline   Mit Zitat antworten
Alt 01.12.2007, 19:01  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch77
Durch new würde er schon ein Objekt erhalten, wenn die Factory nur den richtigen Namen erhielte.
du verstehst nicht was ich meine.

$this referenziert immer das aktuelle object, während self und __CLASS__ immer die aktuelle klasse referieren, wodurch das beispiel von dir eben nur ohne static funktionieren würde (weil man dan get_class($this) benutzen kann)

Zitat:
Aha, interessant. Aber ausgerechnet static? Leicht überfrachtet das Wort.
jap die php macher wollen so wenige wörter wie möglich reservieren.

http://derickrethans.nl/files/meetin...different-name
__________________
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
statische Eigenschaft einer unbekannten Klasse aufrufen Zergling-new PHP-Fortgeschrittene 30 05.01.2010 20:04
statische Variable in Methode tinchen PHP Tipps 2008 5 21.12.2007 20:54
Aufrufe von externer Script mittels FSOCKOPEN phpuser PHP-Fortgeschrittene 6 04.11.2007 13:47
PHP Code mit Ajax Aufrufe "google" - sicher mache dh1sbg PHP-Fortgeschrittene 1 19.03.2007 13:19
Suche Befehl: MySQL Output in statische Seite schmeissen tekknotrip PHP Tipps 2006 3 14.09.2006 11:49
Singleton besser als komplett statische Klasse ? Cmon PHP-Fortgeschrittene 4 13.06.2006 00:34
CURL aufrufe in Klasse verpacken vegeta PHP Tipps 2006 8 16.05.2006 11:03
include nachträglich in statische Seite einfügen PHP Tipps 2007 6 17.11.2005 20:03
Zugriff auf statische methoden oder konstanten nightfreak PHP-Fortgeschrittene 6 14.11.2005 16:56
[Erledigt] htmlspecialchars-Funktion innerhalb von preg_replace aufrufe PHP-Fortgeschrittene 9 23.09.2005 15:12
Statische Kopie von dyn. Seite ? PHP Tipps 2005-2 1 23.07.2005 18:39
PHP5: Klassenattribut für statische Methode, mit Vererbung PHP-Fortgeschrittene 9 24.05.2005 09:35
[Suche] Coder für einfache (statische) Seite Beitragsarchiv 8 10.02.2005 16:32
PHP-Script in statische php-Seite einbinden PHP Tipps 2004 2 13.10.2004 15:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
self bei ableitungen php, get_class statischer aufruf, get_class abgeleitete, ableitung php, php ableitung von statischen klassen

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