Seite 1 von 1

Klasse überarbeiten

Verfasst: Do 8. Jun 2017, 10:21
von Faar
Hier gibt es eine Klasse, die überarbeitet werden sollte: https://api.contenido.org/con4911/sourc ... ml#288-370
Und zwar besonders Zeile 353, 354 und 357 sollten gelöscht oder besser nur als Option geschaltet werden.

Die Idee, da jeweils ein Objekt aufzurufen (das selbst auch noch jeden Scheiß aufruft) und vor den Kategorie-IDs zu packen ist ein Unding.
Wer macht denn in PHP sowas?
Ein mancher möchte einfach nur die IDs der Subcats und nicht den kompletten Datenbestand einer Contenido Instanz.
:?

Re: Klasse überarbeiten

Verfasst: Do 8. Jun 2017, 10:25
von frederic.schneider_4fb
Vielen Dank für Deine Anregung. Ich mache dazu mal ein Ticket auf für die kommende Version (4.9.14), das zu überarbeiten. Ich kann spontan nicht überprüfen, ob eine Optionalisierung oder sogar Rauslöschung Seiteneffekte hat.

Re: Klasse überarbeiten

Verfasst: Do 8. Jun 2017, 10:31
von Faar
frederic.schneider_4fb hat geschrieben:
Do 8. Jun 2017, 10:25
Ich kann spontan nicht überprüfen, ob eine Optionalisierung oder sogar Rauslöschung Seiteneffekte hat.
Durchaus könnte es Seiteneffekte haben, weil vermutlich die Standardmodule auf diese Objekte zurückgreifen.
Folglich bliebe nur eine Option, mit der man die Objekte dort ausschalten kann, aber standardmäßig drinnen sind.
Sonst würde sicher einiges in Contenido nicht mehr funktionieren.

Re: Klasse überarbeiten

Verfasst: Do 8. Jun 2017, 10:33
von frederic.schneider_4fb
Genauso sehe ich das auch. Deshalb schauen wir es uns in Ruhe an. Ich wollte mit dem Hinweis nur ausdrücken, dass das nichts ist, was ich gerade beiläufig mal umsetzen und einchecken kann :-)

Re: Klasse überarbeiten

Verfasst: Do 8. Jun 2017, 10:36
von Faar
Das weiß ich ja :)
Aber anstupsen muss man es mal irgendwann und hiermit habe ich es getan :roll:

Re: Klasse überarbeiten

Verfasst: Do 8. Jun 2017, 10:46
von Oldperl
Servus,
Faar hat geschrieben:
Do 8. Jun 2017, 10:36
Das weiß ich ja :)
Aber anstupsen muss man es mal irgendwann und hiermit habe ich es getan :roll:
Gibt es eigentlich beim Schubsen auch ein Copyright? :roll:
Faar hat geschrieben:
Do 8. Jun 2017, 10:21
Die Idee, da jeweils ein Objekt aufzurufen (das selbst auch noch jeden Scheiß aufruft) und vor den Kategorie-IDs zu packen ist ein Unding.
Wer macht denn in PHP sowas?
Die Idee diese "Idee" zu überarbeiten ist wirklich gut! :wink:

Gruß aus Franken

Ortwin

Re: Klasse überarbeiten

Verfasst: Mo 12. Jun 2017, 10:50
von rethus
Die Idee diese "Idee" zu überarbeiten
erinnert mich irgendwie an Passierschein A38 bei Asterisk und Obelix (https://youtu.be/lIiUR2gV0xk?t=1m10s)
:D

Re: Klasse überarbeiten

Verfasst: Do 1. Nov 2018, 20:54
von xmurrix
Das Ändern der Funktion getSubCategories() in der Klasse cCategoryHelper ist keine gute Idee, zumindest nicht in CONTENIDO 4.9.*.

Die cCategoryHelper->getSubCategories() ist Teil der öffentlichen API von CONTENIDO, d. h. mann muss damit rechnen, dass CONTENIDO-Installationen, die Navigationsmodule verwenden, den Code so programmiert haben, dass sie in $category['item'] eine cApiCategoryLanguage Instanz erwarten. Ändert man dies, werden die CONTENIDO-Installationen Reihenweise Exeptions werfen.

Es wäre aber eine Überlegung wert, dies im nächsten Major-Release von CONTENIDO zu optimieren. Dann kann man auch Änderungen kommunizieren, die nicht abwärtskompatibel sind.

Oder man implementiert in CONTENIDO 4.9.* z. B. eine Funktion getSubCategoriesLight(), die dann eine Struktur ohne item-Objekte liefert, und jeder, der es mag, kann dann die neue Funktion ohne Objekte verwenden.

Gruß
xmurrix

Re: Klasse überarbeiten

Verfasst: Fr 2. Nov 2018, 07:42
von Oldperl
Servus,

xmurrix hat recht, auch wenn viele Entwickler diese Funktion nicht gerne nutzen, kann es sein, dass sie als API-Funktion bereits mehrfach genutzt wird und man durch unüberlegte Änderungen viele Installationen da draußen beim nächsten Release abschießt.

Trotzdem macht eine Art Light-Funktion noch weniger Sinn, denn diese würde die Namenskonventionen ad absurdum führen. Konsistenter wäre ein zusätzlicher Parameter mit einem Default-Wert, ein Boolean, der, je nach Wert, das zurückzuliefernde Array mit oder ohne Objekte erstellt.

Gruß aus Franken

Ortwin

Re: Klasse überarbeiten

Verfasst: Fr 2. Nov 2018, 17:12
von Faar
Faar hat geschrieben:
Do 8. Jun 2017, 10:31
Durchaus könnte es Seiteneffekte haben, weil vermutlich die Standardmodule auf diese Objekte zurückgreifen.
Folglich bliebe nur eine Option, mit der man die Objekte dort ausschalten kann, aber standardmäßig drinnen sind.
Sonst würde sicher einiges in Contenido nicht mehr funktionieren.
:roll:

Re: Klasse überarbeiten

Verfasst: Fr 2. Nov 2018, 17:59
von xmurrix
Es gibt das Programmierparadigma, die besagt, dass Funktionen immer den selben Typ zurückliefern sollten. Dadurch wird der weitere Umgang mit den Rückgabewerten der Funktion vereinfacht, die Komplexität wird reduziert.

Eine Erweiterung der vorhandenen Funktion getSubCategories() um einen Parameter würde zwar immer noch ein Array liefern, aber streng genommen wird dann der Inhalt von $category['item'] ein anderer Typ sein, also die Struktur des Rückgabe-Arrays wird eine andere sein. Man sollte auch diesen Aspekt berücksichtigen.

Grüße
xmurrix