+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Abstrakte Klasse JFactory

  1. #1
    Neu an Board
    Registriert seit
    02.08.2006
    Beiträge
    32
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Lächeln Abstrakte Klasse JFactory

    Hallo,
    ich soll in ein externes Programm in einer "public function", die mit zend Framework erstellt wurde und aus Joomla aufgerufen wurde die Joomla Login-Daten verarbeiten.

    Ein Teil des Codes, der ansonsten prima funktioniert sieht so aus:

    $mainframe = JFactory::getApplication('site');
    $mainframe->initialise();
    $user = JFactory::getUser();
    $user_id = $user->id;

    das externe Programm gibt bei den Befehlen eine Fehlermeldung aus, dass man gerne nur instanziierte Objekte dort haben möchte, was bei der abstrakten Klasse JFactory offensichtlich nicht funktioniert. Gibt es eine Möglichkeit, auf andere Weise die gewünschten Zugangsdaten zu erzeugen ?

    mfg Klaus

  2. #2
    Gehört zum Inventar Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    5.795
    Bedankte sich
    156
    Erhielt 2.254 Danksagungen
    in 2.021 Beiträgen

    Standard

    Poste die exakte Fehlermeldung (und bitte nicht als Grafik, sondern als Text).

    Denke mir, so was hier:

    ImplementedClass.php:
    PHP-Code:
    <?php
    class ImplementedClass extends JFactory{}
    PHP-Code:
    <?php
    ....
    require_once(
    'ImplementedClass.php');
    $jfactory=new ImplementedClass;
    $doc $jfactory->getDocument();
    ....
    Geändert von Re:Later (30.05.2014 um 02:26 Uhr)

  3. #3
    Neu an Board
    Registriert seit
    02.08.2006
    Beiträge
    32
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo und besten Dank!

    Ich hab mal die Stelle mit der abstrakten Klasse geändert. Die Anzahl der Fehlermeldungen ist weniger geworden. So würden die gewünschten Informationen zum
    angemeldeten Benutzer erzeugt, allerdings ist die programmeigene Fehler Routine immer noch nicht zufrieden.....

    require_once('IC.php');
    $jfactory=new ImplementedClass;

    $mainframe = $jfactory->getApplication('site');

    PHP Strict Standards: Non-static method FileMaker::isError() should not be called statically, assuming $this from incompatible context ......................
    PHP Strict Standards: Non-static method FileMaker::getMinServerVersion() should not be called statically, assuming $this from incompatible context in ...............
    PHP Strict Standards: Non-static method FileMaker_Implementation::getMinServerVersion() should not be called statically .............

    $user = $jfactory->getUser();
    $user_id = $user->id;
    $username = $user->username;
    echo $username;

    mfg Klaus

  4. #4
    Gehört zum Inventar Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    5.795
    Bedankte sich
    156
    Erhielt 2.254 Danksagungen
    in 2.021 Beiträgen

    Standard

    FileMaker ist keine Joomla-Klasse, die von dir genannten Methoden keine Joomla-Methoden. Stinknormales PHP-Problem ab 5.4.
    Musst halt die Klassen-Methoden entsprechend der Meldung nichtstatisch aufrufen oder, wenn es eh eine Klasse von Dir/Euch ist(?). die Methoden darin mit static deklarieren.

    Zu Strict Standards findet sich im Netz genug, ebenso wie zum nicht-statisch-Aufruf-Problem.

    Kann man auch durch runterschrauben des error_reporting loswerden. Letztlich sind das keine Meldungen, die zum Abbruch des Scripts fuehren, sondern Warnungen und Nachrichten. Aber nicht die feine Art und vermutlich nicht zukunftssichere Programmierung(?).

  5. #5
    Neu an Board
    Registriert seit
    02.08.2006
    Beiträge
    32
    Bedankte sich
    4
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo,
    besten Dank für die Antwort.
    Die Klassen sind nicht von uns und es ist auch vom Hersteller aus nicht gewünscht, da was zu ändern, da diese ein Teil eines relativ großen Programmpaket sind.
    Auch die Anpassung von error_reporting in der php.ini funktioniert nicht.
    Einzige Möglichkeit ist die passende Parameterübergabe.

    mfg Klaus

  6. #6
    Gehört zum Inventar Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    5.795
    Bedankte sich
    156
    Erhielt 2.254 Danksagungen
    in 2.021 Beiträgen

    Standard

    Na ja, was soll ich sagen, Teufelskreis ;-)

    Wie gesagt FileMaker ist keine Joomla-Klasse, wird aber, dann wohl auch ausserhalb Joomlas, mit falschen Methodenaufrufen beliefert.

    Muesste, wenn die Methoden nicht static umdeklariert werden duerfen eben auch so aehnlich gemacht werden

    $dingsbums=new FileMaker();
    $dingsbums->getWasweissIch();

    Wer oder was ruft FileMaker-Methoden auf? Darf man aber auch nicht aendern, weil der Hersteller es nicht erlaubt.

    => Hersteller selber Schuld.

    Auch die Anpassung von error_reporting in der php.ini funktioniert nicht.
    Geht ja auch innerhalb des Codes, eigentlich, oder via .htaccess oder innerhalb Joomla-konfiguration oder serverseitig. Da sowieso empfohlen ist, in Produktivsystemen error_reporting abzuschalten, sollte das ja wohl irgendwo moeglich sein.
    http://stackoverflow.com/questions/9...rds-in-php-5-4

    Varainte waere noch, das ganze unter PHP 5.3 laufen zu lassen und zu hoffen, dass das mit einem Standard-error_reporting lauft. Erst ab PHP5.4 enthaelt E_ALL auch das E_STRICT.

    http://fmwebschool.com/frm/index.php?topic=6261.0

    summerlearningcampaign.org/news/news.php ;-)))
    Geändert von Re:Later (02.06.2014 um 18:10 Uhr)

  7. Erhielt Danksagungen von:


+ Antworten

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein