Re: [TYPO3-german] API-Aufruf in T3

2010-03-26 Diskussionsfäden Oliver Klee
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

2010-03-26 Diskussionsfäden Peter Russ

--- 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

2010-03-25 Diskussionsfäden Rainer Schleevoigt

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

2010-03-25 Diskussionsfäden Stephan Schuler
-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

2010-03-25 Diskussionsfäden Peter Russ

--- 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

2010-03-24 Diskussionsfäden Rainer Schleevoigt

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

2010-03-23 Diskussionsfäden Rainer Schleevoigt

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

2010-03-23 Diskussionsfäden Peter Russ

--- 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