Re: [TYPO3-german] API-Aufruf in T3
Hi, Stephan Schuler schrieb: bleibe ich deshalb bei meiner Einstellung, dass makeInstance das Mittel der Wahl sein sollte, solange man nicht gleichzeitig alle Alternativen betrachtet und sich bewusst dagegen entscheidet. Genau. makeInstance ist halt the TYPO3 way, den man (bis auf in Ausnahmen) beim Programmieren für TYPO3 benutzen sollte. Oli -- Certified TYPO3 Integrator | TYPO3 Security Team Member ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] API-Aufruf in T3
--- Original Nachricht --- Absender: Oliver Klee Datum: 26.03.2010 10:35: Hi, Stephan Schuler schrieb: bleibe ich deshalb bei meiner Einstellung, dass makeInstance das Mittel der Wahl sein sollte, solange man nicht gleichzeitig alle Alternativen betrachtet und sich bewusst dagegen entscheidet. Genau. makeInstance ist halt the TYPO3 way, den man (bis auf in Ausnahmen) beim Programmieren für TYPO3 benutzen sollte. Alles unwidersprochen, solange Klassen basierend auf dem TYPO3-Framework verwendet werden. Wenn aber (wie z.B. bei Rainer) andere, TYPO3-fremde Libs verwendet werden, ziemlicher Overhead, denn in diesem Falle macht t3lib_div::makeInstance auch nix anderes als $instance = new $className, aber halt mit Plumperquatsch drum herum. Also makeInstance ist das Mittel der Wahl für TYPO3-basierte Klassen. Alles andere ist overhead. Peter. P.S: Hat aber alles nichts mit ursprünglicher Fragestellung zu tun, weil makeInstance Rainers Problem auch nicht gelöst hätte ;-) -- docendo discimus _ uon GbR http://www.uon.li http://www.xing.com/profile/Peter_Russ ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] API-Aufruf in T3
Hallo Peter, ist die Class dann in anderen EXTs sichtbar? Includiere in ext_localconf.php. Gruß Rainer -- Webmasterei Hamburg Dipl.-Ing. R. Schleevoigt / TYPO3 Certified Integrator Ust-ID: DE239491976 mail:rai...@webmasterei-hamburg.de http://webmasterei.com 22303 Hamburg | Novalisweg 10 +49 40 27806982 | skype:kontaktschmied ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] API-Aufruf in T3
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Hallo zusammen. Euer Ansatz läuft in meinen Augen grundlegend an der API vorbei. Eine Klasse mit new zu instanziieren ist unschön. Das würde nämlich bedeuten, dass die zu instanziierende Klasse zu diesem Zeitpunkt innerhalb der PHP-Laufzeit vorhanden ist. Vorhanden heißt: Die zugehörige Datei wurde eingebunden, die Klasse ist interpretiert. Es gibt unzählige Klassen, je größer die Extension desto mehr. Aber bei den meißten Seiten wird nur ein Bruchteil der verfügbaren Klassen wirklich benötigt. Die Anzahl der unnötigen Dateizugriffe (include) und der unnötige Speicherbedarf aufgrund der vielen gemerkten Klassendeklarationen ist enorm. Stattdessen sollten innerhalb des TYPO3-Frameworks (auch wenn TYPO3 ein CMS und kein Framework ist würde ich das Sammelsurium an API-Elementen zusammen den zugehörigen gängigen Anwendungsmustern als Framework bezeichnen) die statische Methode t3lib_div::makeInstance verwendet werden. http://typo3.org/fileadmin/typo3api-4.0.0/d3/d3d/classt3lib__div.html#a170cc12434c0d356e10c362a0af6843 Zunächst ohne Class-Autoloader ändert das am Problem grundsätzlich nichts, die Klasse muss dem Sytem bekannt sein. Allerdings hat makeInstance den Vorteil, dass man die Klasse per xclass-Mechanismus überschreiben kann. makeInstance berücksichtigt das, new nicht. Um das Problem der nicht geladenen Datei zu erledigen sollte an der Stelle an der die Klasse Verwendung findet ein require_once stattfinden. Folgendes hat deshalb vor jeder Klassendeklaration zu stehen die deine Klasse verwendet: require_once(t3lib_extMgm::extPath('deineextension').'class.luc.php'); Das ist ohne Autoloader gängige Praxis. Erkennen kann man das zum Beispiel daran dass der Kickstarter Plugins erzeugt, die noch vor der Klassendeklaration die piBase-Klasse auf diese weise einbinden. Den Autoloader (der dir eigentlich das require_once ersparen sollte, wobei ich zugeben muss damit selbst noch keine Erfahrungen zu haben, weshalb ich da nur vermuten kann was ich bisher so überflogen habe) ist mit 4.3 neu und wird über die ext_autload.php konfiguriert. Die hat ein recht interessantes Format hat: ?php return array('luc'= t3lib_extMgm::extPath('deineextension').'class.luc.php'); ? Heißt: Die Datei gibt ein Array zurück (was darauf hinweit dass Datei innerhalb einer Methode eingebunden wird und man damit dann unmittelbar den Rückgabewert einer Methode definert anstatt den Umweg über eine Variable zu gehen) das pro Element als Schlüssel den instanziierbaren Klassennamen hat und als Wert den Pfad zur Datei in der die Klasse steht. Und spätestens jetzt ist klar, warum new foo(); zugunsten einer schönen API blöd ist: Weil das den Autoloader umgehen würde. Der Teil mit makeInstance() ist Pflicht, der Teil des Autoloades Kür. Grüße, Stephan Schuler TYPO3 Entwickler Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de - -- netlogix GmbH Co. KG Systemhaus | Trainingscenter | Medienagentur Andernacher Straße 53 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: mailto:i...@netlogix.de | Internet: http://www.netlogix.de/ netlogix GmbH Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt Von: typo3-german-boun...@lists.typo3.org [typo3-german-boun...@lists.typo3.org] im Auftrag von Rainer Schleevoigt [rai...@webmasterei-hamburg.de] Gesendet: Mittwoch, 24. März 2010 06:41 An: German TYPO3 Userlist Betreff: Re: [TYPO3-german] API-Aufruf in T3 Hallo Peter, ist die Class dann in anderen EXTs sichtbar? Includiere in ext_localconf.php. Gruß Rainer - -- Webmasterei Hamburg Dipl.-Ing. R. Schleevoigt / TYPO3 Certified Integrator Ust-ID: DE239491976 mail:rai...@webmasterei-hamburg.de http://webmasterei.com 22303 Hamburg | Novalisweg 10 +49 40 27806982 | skype:kontaktschmied ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -BEGIN PGP SIGNATURE- Version: PGP Universal 3.0.0 (Build 2881) Charset: Windows-1252 wpUDBQFLq7Typp0IwsibV8MBCO3+A/9eIMdSgAKhczlSbhYAZ0y/56sJAaSGRH59 dXdQImNk8jjj5QICJABmXgCiVsxherzPj73oAXaQ0N4eMGiRcaHINJRTz+uR5gs4 j0kAwKzTBces5MoMf4cYlYlM1cYaZt7OzIQjIsU2xAFBCNvfv86kyvw4OAd5X6UZ hrsOdMHTVw== =Yc89 -END PGP SIGNATURE- ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] API-Aufruf in T3
--- Original Nachricht --- Absender: Stephan Schuler Datum: 25.03.2010 22:50: -BEGIN PGP SIGNED MESSAGE- Hash: SHA256 [...] Die Fragestellung von Rainer war nicht, ob es so TYPO3 konform eingebunden ist, sondern warum es bei ihm an dieser Stelle (ext_tables.php) nicht geht. In diesem Sinne. Peter. docendo discimus _ uon GbR http://www.uon.li http://www.xing.com/profile/Peter_Russ ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] API-Aufruf in T3
Am 3/24/10 10:34 AM, schrieb Peter Russ: --- Original Nachricht --- Absender: Rainer Schleevoigt Datum: 24.03.2010 10:18: Hallo Peter, Jetzt habe ich eine Ext mit Namen lucapi angelegt, die in ihrer ext_tables.php diese Datei inkludiert. Es liegt wohl an der Sichtbarkeit von in anderen EXTs eingebundenen Classes. Hat denn 'ext_tables.php' und 'ext_localconf.php' einen anderen Mechanismus? Möchte es ja verstehen und nicht nur einem Rezept folgen ... Schaust du: http://www.typo3-nürnberg.de/entwickler/extension-struktur/ext-tablesphp/ Vielen Dank. Das werde ich mir gleich mal reinziehen. Nebbich: wie kann ich absichern, dass gewisse PEAR-Dinger auf dem System laufen. Geht das auch über 'depends'? Rainer aus dem jetzt gerade sonnigen Hamburg. http://kampnagel.webmasterei.com/uploads/tx_kampnagel/20100324_4.png -- Webmasterei Hamburg Dipl.-Ing. R. Schleevoigt / TYPO3 Certified Integrator Ust-ID: DE239491976 mail:rai...@webmasterei-hamburg.de http://webmasterei.com 22303 Hamburg | Novalisweg 10 +49 40 27806982 | skype:kontaktschmied ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
[TYPO3-german] API-Aufruf in T3
Hallo, um an Daten einer Lucene ranzukommen, gibt es eine umfängliche API, nennen wir sie luc. Dann gibt es eine class.luc.php, in der die Class deklariert wird. Jetzt habe ich eine Ext mit Namen lucapi angelegt, die in ihrer ext_tables.php diese Datei inkludiert. Weitere EXTs (FE-Plugins) sollen auf diesen Dienst zurückgreifen. Sie sind danach in die extliste eingehangen. In ihren Plugins wird nun per $l = new luc(); die Class aus lucapi aufgerufen. Leider ist die Class nicht sichtbar. Sie ist erst sichtbar, wenn ich in dieser ext_tables.php die class-Datei aus der lucapi einbinde. Das kann es wohl doch nicht sein. Habe ich am Procedere was falch gemacht? Gruß Rainer -- Webmasterei Hamburg Dipl.-Ing. R. Schleevoigt / TYPO3 Certified Integrator Ust-ID: DE239491976 mail:rai...@webmasterei-hamburg.de http://webmasterei.com 22303 Hamburg | Novalisweg 10 +49 40 27806982 | skype:kontaktschmied ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
Re: [TYPO3-german] API-Aufruf in T3
--- Original Nachricht --- Absender: Rainer Schleevoigt Datum: 23.03.2010 18:40: Hallo, um an Daten einer Lucene ranzukommen, gibt es eine umfängliche API, nennen wir sie luc. Dann gibt es eine class.luc.php, in der die Class deklariert wird. Jetzt habe ich eine Ext mit Namen lucapi angelegt, die in ihrer ext_tables.php diese Datei inkludiert. Weitere EXTs (FE-Plugins) sollen auf diesen Dienst zurückgreifen. Sie sind danach in die extliste eingehangen. In ihren Plugins wird nun per $l = new luc(); die Class aus lucapi aufgerufen. Leider ist die Class nicht sichtbar. Sie ist erst sichtbar, wenn ich in dieser ext_tables.php die class-Datei aus der lucapi einbinde. Das kann es wohl doch nicht sein. Habe ich am Procedere was falch gemacht? Gruß Rainer Includiere in ext_localconf.php. -- docendo discimus _ uon GbR http://www.uon.li http://www.xing.com/profile/Peter_Russ ___ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german