создание экземпляра класса

hash

Guest
создание экземпляра класса

подскажите, плиз, можно ли в скрипте
создать экземпляр класс если известно его имя? а если да, то как?
 

Сергей123

Новичок
Вкратце об этом этом написано в документации (раздел Classes and Objects, "слово" new).
 

hash

Guest
в скрипт передан параметер $class_name и $descr_file.
PHP:
include($descr_file)
$obj = new $class_name
на такую конструкцию ругается
 

Сергей123

Новичок
Поставь перед include
PHP:
error_reporting(E_ALL);
ini_set('display_errors', 1);
и покажи всю "ругань".
 

hash

Guest
Fatal error: Cannot instantiate non-existent class: index in /usr/local/www/data-dist/SERVICES/test.php on line 4

-~{}~ 21.10.04 10:36:

PHP:
require_once('./lib/content.inc.php');
class Index extends Content{
    function Index($test=''){
        $this->test = $test;
    }
    function Display(){
        echo "test = ".$this->test."<br>";
        $key = "key";
        $input = "Let us meet at 9 o'clock at the secret place.";
        $size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB);
        //$iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
        //$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB), MCRYPT_DEV_RANDOM);
        $iv = '01234567';
        echo "size: ".$size."<br>";
        echo $iv." size:".strlen($iv)."<br>";
        $encrypted_data = mcrypt_cfb (MCRYPT_BLOWFISH, $key, $input, MCRYPT_ENCRYPT,$iv);
        $decrypted_data = mcrypt_cfb (MCRYPT_BLOWFISH, $key, $encrypted_data, MCRYPT_DECRYPT,$iv);
        echo $input."<br>";
        echo $encrypted_data."<br>";
        echo $decrypted_data."<br>";
    }
}
-~{}~ 21.10.04 10:37:

запускаемый скрипт:
PHP:
$libfile = "index.php";
$clsname = "Index";
$obj = new $clsname();
$obj->Display();
 

Сергей123

Новичок
Описания приведённого класса "не видит" эта строчка $obj = new $clsname();
Ищи почему...
 

XiMiK

Новичок
Любите вы над человеком поиздеваться!
Хотя new $clsname(); - это конечно круто...
 

hash

Guest
ошибочка
PHP:
$libfile = "index.php";
include($libfile);
$clsname = "Index";
$obj = new $clsname();
$obj->Display();
втом и вопрос, какую конструкцию вписать, чтоб инициализировать объект класса $classname ...
 

Сергей123

Новичок
hash,
ещё раз: эта правильная строчка $obj = new $clsname(); "не видит" описания приведённого класса.
Где это описание? В index.php? Если да - точно include твой не ругался?
 

hash

Guest
та все видит...
если
PHP:
$libfile = "index.php";
include($libfile);
//$clsname = "Index";
$obj = new Index();
$obj->Display();
- то все нормально работает
 

XiMiK

Новичок
а как он себя ведёт, если сам класс Index поместить в один файл с вызывающим его кодом (т.е. не инклюдить)?
 

hash

Guest
даже если так:
если
PHP:
$libfile = "index.php";
include($libfile);
//$clsname = "Index";
$obj = new Index();
$obj->Display();
- то все нормально работает
 

XiMiK

Новичок
Один файл -
PHP:
require_once('./lib/content.inc.php'); 
class Index extends Content{ 
    function Index($test=''){ 
        $this->test = $test; 
    } 
    function Display(){ 
        echo "test = ".$this->test."<br>"; 
        $key = "key"; 
        $input = "Let us meet at 9 o'clock at the secret place."; 
        $size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB); 
        //$iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM); 
        //$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CFB), MCRYPT_DEV_RANDOM); 
        $iv = '01234567'; 
        echo "size: ".$size."<br>"; 
        echo $iv." size:".strlen($iv)."<br>"; 
        $encrypted_data = mcrypt_cfb (MCRYPT_BLOWFISH, $key, $input, MCRYPT_ENCRYPT,$iv); 
        $decrypted_data = mcrypt_cfb (MCRYPT_BLOWFISH, $key, $encrypted_data, MCRYPT_DECRYPT,$iv); 
        echo $input."<br>"; 
        echo $encrypted_data."<br>"; 
        echo $decrypted_data."<br>"; 
    } 
}



$clsname = "Index"; 
$obj = new $clsname(); 
$obj->Display();
- ТАК ТОЖЕ НЕ РАБОТАЕТ?
 

XiMiK

Новичок
Да, кстати, класс Content тоже должен нормально быть определён, до Index.

А так хрен знает :)
 

hash

Guest
ты, наверно, нихрена не читаеш, а просто отфонаря пишеш...
 
Сверху