Не могу понять, что происходит

я пробую Zend framework, у меня есть две папки в E:\Archivos de programa\Zend\ZendServer\share, одна из них — ZendServer, а другая — ZendServer2. Я не могу вспомнить, когда-либо устанавливал эти две версии, но я не думаю, что это проблема. Я использую netbeans в качестве ide, и я пытаюсь создать ABM пользователей, использующих BlockCipher. Вот мой код.

<?php
use Zend\Crypt\BlockCipher;
class Application_Model_DbTable_Usuarios extends Zend_Db_Table_Abstract
{

    protected $_name = 'usuario';

    public function getUsuario($usuario)
    {
        $usuario = (string)$usuario;
        $row = $this->fetchRow('Usuario = ' . $usuario);
        if (!$row) {
            throw new Exception("Could not find row $usuario");
        }
        return $row->toArray();
    }

    public function addUsuario($usuario, $clave)
    {

       $blockCipher = Zend\Crypt\BlockCipher::factory('mcrypt',array('algo'=>'aes'));
       $blockCipher->setKey('encryption key');
       $result = $blockCipher->encrypt($clave);
       echo "Encrypted text: $result \n";
       exit;
       $data = array(
            'Usuario' => $usuario,
            'Clave' => $blockCipher,
        );
        $this->insert($data);

    }

    public function updateUsuario($usuario, $clave)
    {
        $blockCipher =  BlockCipher::factory($clave, array(
                                'algo' => 'blowfish',
                                'mode' => 'cfb',
                                'hash' => 'sha512'
                        ));
        $data = array(
            'Clave' => $blockCipher,
        );
        $this->update($data, 'Usuario = ' . (string)$usuario);

    }

    public function deleteUsuario($usuario)
    {
        $this->delete('Usuario = ' . (string)$usuario);
    }

}

и в моем php.ini у меня есть include_path=".;E:\Archivos de programa\Zend\ZendServer\share\ZendFramework2\library"

И я получаю эту ошибку

Fatal error: Class 'Zend\Crypt\BlockCipher' not found in E:\Documents and Settings\dvieira\Mis documentos\NetBeansProjects\justforgeeks\application\models\DbTable\Usuarios.php on line 21

Я не понимаю, почему. Не могли бы вы мне помочь? заранее спасибо


person llocani    schedule 23.08.2013    source источник
comment
Похоже, вы пытаетесь использовать классы ZF2 в приложении ZF1. Можете ли вы подтвердить, какую версию ZF вы используете?   -  person Tim Fountain    schedule 24.08.2013
comment
может быть, но я так не думаю, когда я пробую phpinfo, он показывает, что эта программа использует Zend Scripting Language Engine: Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies with Zend Extension Manager v5.1, Copyright (c) 2003-2010 гг., Zend Technologies   -  person llocani    schedule 24.08.2013
comment
Ни один из них не относится к Zend Framework. Можете ли вы предоставить больше информации о файловой структуре вашего приложения?   -  person Tim Fountain    schedule 24.08.2013
comment
Спасибо за ответ, ищу, как понять, какая у меня версия Zend, которую я нашел: localhost:10081 /ZendServer/Index/Index#1377541716060 Там написано: Zend Framework Version 1.12.0 Думаю, проблема может быть в этом. Y попытается обновиться до Zend 2.0. Еще раз спасибо   -  person llocani    schedule 26.08.2013


Ответы (1)


Вы используете пространства имен в своем приложении, поэтому вам нужно убедиться, что ваш автозагрузчик может с этим справиться. Если это приложение ZF1, то нет. Можете ли вы попробовать вместо этого использовать require для включения файла класса? Вы можете изменить автозагрузчик, чтобы он работал с пространствами имен

Во-вторых, при использовании пространств имен, если вы создаете псевдоним для класса

use Zend\Crypt\BlockCipher;

затем вы создаете экземпляр

$blockCipher = BlockCipher::factory('mcrypt',array('algo'=>'aes'));
person Michal M.    schedule 24.08.2013
comment
Спасибо, в итоге у меня zend1.12, обновлю и попробую еще раз. - person llocani; 26.08.2013