Zend framework2 未找到zend framework 2用户类

Zend framework2 未找到zend framework 2用户类,zend-framework2,Zend Framework2,我正在为插入用户信息抛出表单开发一个ZF2类。我有一个用户类,UserTable类,并且对我的控制器做了一些更改 ***User.php*** <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template i

我正在为插入用户信息抛出表单开发一个ZF2类。我有一个用户类,UserTable类,并且对我的控制器做了一些更改

***User.php***
 <?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace Users\Model;

/**
 * Description of User
 *
 * @author mlorente
 */
class User {

    public $id;
    public $name;
    public $email;
    public $password;

    public function setPassword($clear_password) {
        $this->password = md5($clear_password);
    }

    function exchangeArray($data){
        $this->name = (isset($data['name']))?$data['name']:null;
        $this->password = (isset($data['email']))?$data['email']:null;
        if (isset($data['password'])){
            $this->setPassword($data['password']);
        }
    }
}
Las代码是控制器的一部分。当我测试应用程序时,它提到了这个错误

致命错误:在C:\Program中找不到类“Users\Controller\User” Files\EasyPHP-DevServer-14.1VC11\data\localweb\ZF2\u TUTORIAL1\module\Users\src\Users\Controller\RegisterController.php 第74行

我在找这条线,但我不知道怎么修。我认为这比看起来更简单。

因为您(大概)在调用
new User()时在控制器类的顶部声明了名称空间
Users\Controller
PHP认为您的意思是
new\Users\Controller\User()
,它不存在(因此出现错误)。要解决此问题,请将用户模型导入当前范围。您也需要对
UserTable
执行同样的操作,否则您将遇到同样的问题

将这两行添加到控制器类的顶部(在名称空间声明之后):

那么它应该会起作用

<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

namespace Users\Model;

use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;

/**
 * Description of userTable
 *
 * @author mlorente
 */
class UserTable {

    protected $tableGateway;

    function __construct(TableGateway $tableGateway) {
        $this->tableGateway = $tableGateway;
    }

    public function saveUser(User $user){

        $data = array(
            'name' => $user->name,
            'email' => $user->email,
            'password' => $user->password,
        );

        $id = (int)$user->id;

        if($id == 0){
            $this->tableGateway->insert($data);
        }else{
            if($this->getUser($id)){
                $this->tableGateway->update($data, array('id' => $id));
            }else{
                throw new Exception('El ID de usuario no existe');
            }
        }
    }

    public function getUser ($id){
        $id = (int)$id;
        $rowset = $this->tableGateway->select(array('id' => $id));
        $row = $rowset->current();
        if (!$row){
            throw new Exception('No se ha encontrado la fila con ID '.$id);
        }

        return $row;
    }

}
public function processAction(){
        $form = new RegisterForm();
        $form->get('submit')->setValue('Enviar');

        $request = $this->getRequest();
        if(!$request->isPost()){
            return $this->redirect()->toRoute(NULL,
                    array('controller' => 'register',
                          'action' => 'index'));
        }

        $registro = new Register();
        $form->setInputFilter($registro->getInputFilter());
        $form->setData($request->getPost());

        if($form->isValid()){
            $registro->exchangeArray($form->getData());
            $this->createUser($form->getData());
            return $this->redirect()->toRoute(NULL, array('controller' => 'register','action' => 'confirm'));
        }else{
            $model = new ViewModel(array(
                'error' => true,
                'form' => $form,
            ));
            $model->setTemplate('users/register/index');
            return $model;
        }

        return array('form' => $form);
    }

    protected function createUser(array $data){

        $sm = $this->getServiceLocator();
        $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
        $resultSetPrototype = new \Zend\Db\ResultSet\ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new \Users\Model\User);
        $tableGateway = new \Zend\Db\TableGateway\TableGateway('user', $dbAdapter, null, $resultSetPrototype);

        $user = new User();
        $user->exchangeArray($data);
        $userTable = new UserTable($tableGateway);
        $userTable->saveUser($user);
        return true;
    }
use Users\Model\User;
use Users\Model\UserTable;