Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam,

Dziwny problem z tworzeniem nowej aplikacji do IP.Board 3.0.X. Mam kod app_class_aplikacja.php i tam chcę, aby dodawał biblioteki. Oto kod:

<?php
/**
* DiabloTrade.pl
* Forum Gold 2.0.0
* Forum Gold initialization class
* 
* @author Largo-W
* @copyright (c) 2008 - 2009 DiabloTrade.pl
* @package Forum Gold
* @version 2.0.0prealpha1
*
*/

if ( !defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}

class app_class_fg
{
/**
* Registry objects
* @access protected
* @var object
*/
protected $registry;
protected $DB;
protected $settings;
protected $request;
protected $lang;
protected $member;
protected $memberData;
protected $cache;

/**
* Constructor
* 
* @access public
* @param object ipsRegistry reference
* @return void
*/
function __construct( ipsRegistry $registry )
{
/* Make objects */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();
$this->lang = $this->registry->getClass( 'class_localization' );
$this->member = $this->registry->member();
$this->memberData =& $this->registry->member()->fetchMemberData();

/* ACP location? */
if ( IN_ACP )
{
try
{
/* Add required class! */
require_once( IPSLib::getAppDir( 'fg' ) .'/sources/classFG.php' );
require_once( IPSLib::getAppDir( 'fg' ) .'/sources/admin_fg_functions.php' );

$this->registry->setClass( 'ForumGoldLibrary', new admin_fg_functions( $registry ) );

/* Add language! */
$this->registry->class_localization->loadLanguageFile( 'admin_fg', 'fg' );
}
catch( Exception $error )
{
IPS_exception_error( $error );
}
}
else
{
try
{
require_once( IPSLib::getAppDir( 'fg' ) .'/sources/classFG.php' );
$this->registry->setClass( 'ForumGoldLibrary', new ForumGoldLibrary( $registry ) );

/* Add language! */
$this->registry->class_localization->loadLanguageFile( 'public_fg', 'fg' );
}
catch( Exception $error )
{
IPS_exception_error( $error );
}
}
}
}

?>

Potem biblioteka i problem pojawia się kiedy chcę wywołać $this->registry->getClass('output')->showError() lub $this->registry->output->showError(), a nawet statyczna metoda ipsRegistry::getClass('output')->showError nie działa. Czemu? Wszystkie inne obiekty są prawidłowo tworzone.

Kod klasy:

<?php
/**
* DiabloTrade.pl
* Forum Gold 2.0.0
* Forum Gold Sources Class
* 
* @author Largo-W
* @copyright (c) 2008 - 2009 DiabloTrade.pl
* @package Forum Gold
* @version 2.0.0prealpha1
*
*/

if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}

class ForumGoldLibrary
{
/**
* Registry objects
* @access private
* @var object
*/
protected $registry;
protected $DB;
protected $settings;
protected $request;
protected $lang;
protected $member;
protected $cache;

/**
* Constructor
*
* @param object $registry ipsRegistry object
* @return void
* @access public
*/
public function __construct( ipsRegistry $registry )
{
/* Make objects */
$this->registry = $registry;
$this->DB = $this->registry->DB();
$this->settings =& $this->registry->fetchSettings();
$this->request =& $this->registry->fetchRequest();
$this->lang = $this->registry->getClass('class_localization');
$this->member = $this->registry->member();
$this->memberData =& $this->registry->member()->fetchMemberData();
$this->cache = $this->registry->cache();
$this->caches =& $this->registry->cache()->fetchCaches();


/* Forum Gold enabled? */
if( !$this->settings['lw30_fg_enable'] )
{
$this->registry->getClass('output')->showError( $this->lang->words['lw30_fg_off_message'], '10F01' );
}
}
}

?>

Błąd:

exception 'Exception' with message 'output is not an object' in /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php:918
Stack trace:
#0 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/sources/classFG.php(59): ipsRegistry::getClass('output')
#1 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/app_class_fg.php(80): ForumGoldLibrary->__construct(Object(ipsRegistry))
#2 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(1169): app_class_fg->__construct(Object(ipsRegistry))
#3 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(524): ipsRegistry::_getAppClass()
#4 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsController.php(75): ipsRegistry::init()
#5 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsController.php(62): ipsController->init()
#6 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/index.php(24): ipsController::run()

#7 {main}

Edytowane przez Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano

Nie łap wyjątków. :)

Witaj,

[OT] Jakbym Cię nie znał to bym nie uwierzył, że Ty to mówisz ^^ Jak można nie korzystać z podstawowej funkcjonalności w językach obiektowych czyli z wyjątków? :-)[/OT]

Ucięcie try i catch nic nie dało. Dalej nie ma obiektu output :-) Oto błąd:

[b]Fatal error[/b]: Uncaught exception 'Exception' with message 'output is not an object' in /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php:918 Stack trace: #0 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/sources/classFG.php(65): ipsRegistry::getClass('output') #1 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/sources/classFG.php(56): ForumGoldLibrary->loadPermissions() #2 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/applications_addon/other/fg/app_class_fg.php(57): ForumGoldLibrary->__construct(Object(ipsRegistry)) #3 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(1169): app_class_fg->__construct(Object(ipsRegistry)) #4 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php(524): ipsRegistry::_getAppClass() #5 /srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsController.php(75): ips in [b]/srv/www/vhosts/diablotrade.pl/subdomains/dev/httpdocs/admin/sources/base/ipsRegistry.php[/b] on line [b]918[/b]

Nie to powoduje ten błąd, a coś zupełnie innego.

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano

Witaj,

Poradziłem sobie samemu. Zamiast w konstruktorze biblioteki, wywołuje funkcję getClass(), a następnie odwołuje się do publicznej metody, która ładuje wszelką konfigurację, pliki, CSS, JS i sprawdza podstawową funkcjonalność.

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.