so richtig verstehe ich das aber immer noch nicht... was soll ich mit dieser zahl?
instanznummer eines objekts herausfinden
Einklappen
X
-
-
hab nen weg gefunden
PHP-Code:function get_instance_no(&$obj) {
if (is_object($obj)) {
ob_start();
echo $obj;
$s = ob_get_contents();
$i = substr($s, strpos($s, '#') + 1);
ob_end_clean();
return intval($i);
}
else {
return false;
}
}
is nur spaß!!!
edit: aber eigendlich... funktionieren tuts...Zuletzt geändert von MarkusW; 23.04.2006, 15:15.
Kommentar
-
Alrik:
<<Diese Counter funktionalität direkt in die Klasse einzubauen hat eben den Nachteil, dass es nicht wiederverwertbar ist und ich jeder Klasse diesen Teil einbauen müsste.>>
nicht Unbedingt!
Dafür ist auch Vererbung da, aber in manchen Fällen (wegen ein-facher Vererbung) muss man eben ein anderen Weg gehenSlava
bituniverse.com
Kommentar
-
Original geschrieben von Slava
nicht Unbedingt!
Dafür ist auch Vererbung da, aber in manchen Fällen (wegen ein-facher Vererbung) muss man eben ein anderen Weg gehen [/B]
Schließlich ging es bei deiner Version um eine konkrete Implementierung in den zu benutzenden Klassen.
Und diese Massenvererbung die dann gemacht werden müsste, spricht wieder gegen deine Lösung und für meine.
Kommentar
-
Original geschrieben von Alrik
Für sowas ist Vererbung nicht gedacht!
btw. hier noch Spielerei mit der ReflectionAPI, erlaubt dann auch das instantiieren eines Objektes wo der Konstruktor Parameter erwartet
PHP-Code:<?php
class test {
public $test;
public function __construct($par) {
$this->test = $par;
}
public function gib() {
return $this->test;
}
}
class class_container {
static $nummer;
static function get_obj($name, $pars = array()) {
if (!isset(self::$nummer[$name])) {
self::$nummer[$name] = 0;
}
$objekt = call_user_func_array(
array(new ReflectionClass($name), 'newInstance'), $pars);
$objekt->instanznummer = ++self::$nummer[$name];
return $objekt;
}
}
$objekt = class_container::get_obj('test', array('1'));
echo $objekt->gib() . '<br />';
$objekt2 = class_container::get_obj('test', array('2'));
echo $objekt2->gib() . '<br />';
?>
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
-
ich möchte bitte, dass ein Meister dem Newbie erklehrt, warum in diesem Fall eine Vererbung nichts taugt!
wenn bei der Vererbter klasse kein constructor defeniert ist, dann wird es sofort und problemlos funktionieren.
Wenn du aber construktor in vererbter klasse defenierst, dann ist es auch nicht schwer einmal
parent::__construct();
zu schreiben.
aber factory mit Reflections-api finde ich cool, der arbeitsgeber wird einfach Angst haben mich zu feuern, weil ohne mich wird ein andere 2 Monaten versuchen meine code zu verstehenSlava
bituniverse.com
Kommentar
-
Du redest irgendwie bezuglosen Müll Slava!?!
Ich bin nicht derjenige, der Vererbung in Erwägung gezogen hat, sondern du.
Auf meine Argumente gehst du dann auch nicht ein und schreibst einfach irgendwelche Begriffe und Sätze, die du irgendwo mal gelesen hast, hin.
Warum du dazu noch zum Thema Konstuktor bei Vererbung kommst, wo du noch selber sagst, das Vererbung nicht angebracht ist...
Kommentar
-
hi Alrik!
bist du ein Master?
Ich wollte die Erklärung von Master hören.
Und warum du dich so angegriffen fühlst weis ich recht nicht?
Die Lösung von Fragesteller haben wir schon gesehen, und jetzt führen wir einfach allgemeine Gespreche zu Objectorientierung.
Wenn ich mich irgendwie falsch ausgedrückt habe, was auch vorkommen kann (deutsch ist nicht meine Mutersprache), dann bitte ich um Entschuldigung.
grüße Slava.Slava
bituniverse.com
Kommentar
-
Original geschrieben von Slava
ich möchte bitte, dass ein Meister dem Newbie erklehrt, warum in diesem Fall eine Vererbung nichts taugt!
Original geschrieben von ghostgambler
kommt drauf an, wobei ich in diesem Falle wohl erstmal zustimme ...
aber factory mit Reflections-api finde ich cool, der arbeitsgeber wird einfach Angst haben mich zu feuern, weil ohne mich wird ein andere 2 Monaten versuchen meine code zu verstehen
Abgesehen davon reicht ein Blick in die Manual zum Thema ReflectionAPI um rauszufinden, dass das Ding eine Instanz zurückliefert ~_~
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
-
Original geschrieben von ghostgambler
Ich finde es persönlich einfach häßlich alle Klassen von einer Basis-Klasse abzuleiten und vom Gefühl her wird da der bytecode und somit auch der runtime Source größer ... müsste man mal ausprobieren, hab ich aber gerade keine Lust und keine Zeit zu
auch eine art vtable hat mit der er entscheiden kann welche methode denn
jetzt gemeint ist. Ist aber wie gesagt nur eine vermutung.
Btw. kann es ein ziemlicher vorteil sein wenn alle klassen von einer basis
erben. Viele gui frameworks gehen diesen weg und nicht nur die.
greets(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Kommentar
-
Original geschrieben von closure
Btw. kann es ein ziemlicher vorteil sein wenn alle klassen von einer basis
erben. Viele gui frameworks gehen diesen weg und nicht nur die.
ich bin ehrlich, ich würde meine Lösung so auch nicht verwenden, aber die mit den Ableitungen auch nicht. Ich würde nach einer Lösung suchen, die es mir ermöglich alles was unnötig ist in der Produktion rauszuwerfen und zu den unnötigen Sachen gehört z.B. die Instanznummer-Klasse
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
Kommentar