![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Mam następującą klasę:
[php:1:1875352083] <?php class Controller { static $arrInstances; /** * Konstruktor */ function Controller() { $this->arrInstances = array(); } /** * @access public * @return false jeśli nie można załadować modułu * @param str $strModuleName Nazwa modułu do załadowania * @param str $strModuleFile Nazwa pliku do załadowania * @desc Ładuje wybrany moduł */ function Load( $strModuleName, $strModuleFile = '', $arrArguments = '', $blnNotClass = false ) { if ( isset( $strModuleFile ) ) { require_once( self::Config( 'CLASSES_ROOT' ) . '/' . $strModuleFile ); } if ( $blnNotClass == false && !is_array( $arrArguments ) ) { self::$arrInstances[$strModuleName] = new $strModuleName; return self::$arrInstances[$strModuleName]; } elseif ( is_array( $arrArguments ) ) { // tutaj winien być kod, tylko nie wiem jaki ![]() } } } ?> [/php:1:1875352083] Pozostałe funkcje wycięłem. Ale teraz przejdźmy do właściwego pytania - czy ma ktoś pomysł jak przekazywać parametry do nowo tworzonej klasy (tworzonej przez funkcję Load) poprzez samą funkcję? Może trochę jaśniej. Wywołuję funkcję load: [php:1:1875352083] <?php Controller::Load( 'Test', 'test.class.php', array( 'argument1', 'argument2' ) ); ?> [/php:1:1875352083] I teraz klasa Load powinna załadować clasę w ten sposób: [php:1:1875352083] <?php self::$arrInstances['Test'] = new Test('argument1','argument2'); ?> [/php:1:1875352083] Lecz nie wiem jak to rozwiązać.... |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
[manual:d9426111c7]call_user_func_array[/manual:d9426111c7]
[php:1:d9426111c7]<?php call_user_func_array(array(&$this, 'Test'), array('argument1','argument2')); // czyli u ciebie powinnno być: call_user_func_array(array(&$this, $strModuleName), $arrArguments); ?>[/php:1:d9426111c7] |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Pierwszy argument tej funkcji nie może być tablicą:
Cytat Warning: call_user_func_array() [function.call-user-func-array]: First argumented is expected to be a valid callback, 'Array' was given in D:wwwcmscodeclassescontroller.class.php on line 40
Pozatym czy ten kod stworzy nowy obiekt klasy? Bo tutaj chodzi o stworzenie nowej klasy z parametrami przekazanymi do konstruktora a nie o wywołanie funkcji. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.07.2025 - 21:51 |