Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Argumenty przekazane z funkcji do innej funkcji
Forum PHP.pl > Forum > PHP
matid
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ć....
Bora
[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]
matid
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.