Frage zur Url Upgrade

Alles rund um Module und Plugins in CONTENIDO 4.9.
Antworten
derju
Beiträge: 301
Registriert: Do 15. Jan 2009, 09:00
Kontaktdaten:

Frage zur Url Upgrade

Beitrag von derju » Di 19. Sep 2017, 13:54

Hallo zusammen,

wie kann ich das verstehen?
url – [Auth classes] Use same method from session object.


LG - derJu
Contenido 4.8.20 | Contenido 4.9.12

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Frage zur Url Upgrade

Beitrag von rethus » Mo 27. Nov 2017, 15:05

Ja, ist für wahr etwas spartanisch gehalten die Info im "Code Analyzer".

Also Auth/Contenido_Auth::url wurde in 4.9 überarbeitet, so das keine Methode "url" mehr im AUTH-Objekt vorhanden ist.

Da die ehemalige "URL-Methode" keinen Parameter benötigte, aber die cSession->url() einen Parameter benötigt, ist das etwas verwirrend.

An folgendem Beispiel kannst du sehen, wie du es ersetzen kannst. Natürlich musst du immer sehen, in welchem Context die Methode genutzt wird, denn der CodeAnalyzer schlägt auch irrtümlich bei sehr vielen anderen "url()"-Methoden im Sourcecode an, die nicht ersetzt werden müssten.

Code: Alles auswählen

 $PHP_SELF = $auth->url()."&";

Code: Alles auswählen

 $PHP_SELF = $sess->url($selfURL);
Zu achten ist darauf, dass das session-Objekt in dem Kontext existiert. Eigentlich sollte es von Contenido als $sess geladen werden.

Arbeitet man in einer Funktion, müsste dies ggf. mit _code]global $sess;[/code] Zugriff auf den Global-Scope gewährt werden, das Objekt als Parameter an in die Funktion übergeben, oder via

Code: Alles auswählen

$sess = new cSession();
neu instantiiert werden.

Der an "url" zu übergebende Parameter ist eine URL. Zuvor wurde im "alten" auth-Objekt die "PHP_SELF" schon in das Objekt gespeichert, weshalb es nicht nötig war, diese anzugeben, wenn es die aktuelle URL ist. Nun ist es aber notwendig, und man kann dazu auf die in 4.9.x verfügbare $selfURL zugreifen (war zuvor cSession::self_url)
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Frage zur Url Upgrade

Beitrag von Oldperl » Mo 27. Nov 2017, 21:13

Servus,
rethus hat geschrieben:
Mo 27. Nov 2017, 15:05
Arbeitet man in einer Funktion, müsste dies ggf. mit _code]global $sess;[/code] Zugriff auf den Global-Scope gewährt werden, das Objekt als Parameter an in die Funktion übergeben, oder via

Code: Alles auswählen

$sess = new cSession();
neu instantiiert werden.
Bitte keine global-Definitionen oder ähnliches. CONTENIDO 4.9 hat eine Registry-Klasse, die genau für solche Fälle vorhanden ist. Mit Hilfe dieser Klasse kann man dann auch ganz einfach das aktuelle Session-Objekt bekommen.

Code: Alles auswählen

$sess = cRegistry::getSession();
Auch die Session-ID kann man entsprechend abfragen, wobei ich persönlich auf dafür eine entsprechende Methode, anstelle eines direkten Zugriffs auf eine Klassenvariable, bevorzugt hätte.

Code: Alles auswählen

$sessId = cRegistry::getSession()->id;
Auch für viele andere Objekte oder globale Variable hält die cRegistry entsprechende Zugriffs-Methoden vor. Einfach mal in die Doku schauen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Antworten