Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Argumenty przekazane z funkcji do innej funkcji
matid
post 15.05.2004, 08:52:38
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 winksmiley.jpg
}
}


}

?>
[/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ć....
Go to the top of the page
+Quote Post
Bora
post 15.05.2004, 09:46:20
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]
Go to the top of the page
+Quote Post
matid
post 15.05.2004, 17:14:20
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 21:51