Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何使我的代码更像Zend Framework中的MVC_Performance_Zend Framework_Optimization_Zend Db - Fatal编程技术网

Performance 如何使我的代码更像Zend Framework中的MVC

Performance 如何使我的代码更像Zend Framework中的MVC,performance,zend-framework,optimization,zend-db,Performance,Zend Framework,Optimization,Zend Db,我是ZF的新手。我对ZF的流程不太了解。我所做的是,我在我的控制器操作中也编写了我的模型类工作。这很有效,但我不喜欢这个。我想要ZF风格的。下面是我的代码,我的意思是我在控制器上的一个动作。你可以通过制作一个模型类并在那里剪切粘贴代码来修饰它吗。那么我如何调用这个类呢?如何在那里传递变量?我如何从中检索结果并将该结果分配给我的视图 public function calllogsAction(){ if(!Zend_Auth::getInstance()->hasIden

我是ZF的新手。我对ZF的流程不太了解。我所做的是,我在我的控制器操作中也编写了我的模型类工作。这很有效,但我不喜欢这个。我想要ZF风格的。下面是我的代码,我的意思是我在控制器上的一个动作。你可以通过制作一个模型类并在那里剪切粘贴代码来修饰它吗。那么我如何调用这个类呢?如何在那里传递变量?我如何从中检索结果并将该结果分配给我的视图

public function calllogsAction(){
         if(!Zend_Auth::getInstance()->hasIdentity()){
               $this->_redirect('login/login');
      }
      else{

       $request = $this->getRequest();
       $phone_service_id  =  $request->getParam("id");
       $registry = Zend_Registry::getInstance();  
       $DB = $registry['DB'];

       $select = $DB->select()
         ->from('CALL_LOG', array('caller_name','call_number','call_start_time','call_duration','call_direction'))
         ->where('phone_service_id = ?', $phone_service_id)
         ->order('date_created DESC')
         ->limit(0,9);

       $adapter = new Zend_Paginator_Adapter_DbSelect($select);
       $paginator = new Zend_Paginator($adapter);
       $page=$this->_getParam('page',1);
       $paginator->setItemCountPerPage(10);
       $paginator->setCurrentPageNumber($page);
       $this->view->paginator=$paginator;
       $page = $paginator->getCurrentPageNumber();
       $perPage = $paginator->getItemCountPerPage();
       $total = $paginator->getTotalItemCount();
       $A = ($page - 1) * $perPage + 1;
       $B = min($A + $perPage - 1, $total);
       $C = $total;
       $this->view->assign('url', $request->getBaseURL());
       $this->view->assign('total',$total );
       $this->view->assign('page',$page );
       $this->view->assign('phone_service_id',$phone_service_id );
       $this->view->assign('A',$A );
       $this->view->assign('B',$B );
       $this->view->assign('C',$C );
       }
    }
请编辑我的代码。感谢您的关注

编辑:: 我已经添加了这样的模型

class Application_Model_Services extends Zend_Db_Table_Abstract{

protected $_name = 'albums';

    public function get_services($user_id,$DB){
    $user_id = (int)$user_id;

     $select = $DB->select()
     ->from(array('p' => 'phone_service'))
     ->join(array('u' => 'user_preferences'), 'u.phone_service_id = p.phone_service_id')
     ->where('u.user_preferences_name = ?', 'is_user_package_active')
     ->where('p.user_id = ?', $user_id);

     $adapter   = new Zend_Paginator_Adapter_DbSelect($select);
     $paginator = new Zend_Paginator($adapter);

    if (!$paginator) {
        throw new Exception("Could not find row ");
    }
    return $paginator->toArray();
    }
   }
 ?>
而不是改变我的行动

  public function controlpannelAction(){
      if(!Zend_Auth::getInstance()->hasIdentity()){
          $this->_redirect('login/login');
      }
      else{
      $data = Zend_Auth::getInstance()->getStorage()->read();  
      $user_id = $data->user_id;
      $registry = Zend_Registry::getInstance();  
      $DB = $registry['DB'];

       $services = new Application_Model_Services();
       $paginator = $services->get_services($user_id,$DB);


     $page=$this->_getParam('page',1);
     $paginator->setItemCountPerPage(10);
     $paginator->setCurrentPageNumber($page);
     $this->view->paginator=$paginator;
     $request = $this->getRequest();
     $this->view->assign('url', $request->getBaseURL());
     $page = $paginator->getCurrentPageNumber();
     $perPage = $paginator->getItemCountPerPage();
     $total = $paginator->getTotalItemCount();
     $A = ($page - 1) * $perPage + 1;
     $B = min($A + $perPage - 1, $total);
     $C = $total;
     $this->view->assign('A',$A );
     $this->view->assign('B',$B );
     $this->view->assign('C',$C );
      }
但这是给thsi的错误

Warning: Zend_Loader::include_once(Application\Model\Services.php) [function.Zend-Loader-include-once]: failed to open stream: No such file or directory in C:\xampp\htdocs\xyz\library\Zend\Loader.php on line 146

Warning: Zend_Loader::include_once() [function.include]: Failed opening 'Application\Model\Services.php' for inclusion (include_path='C:\xampp\htdocs\phoggi/library;.;C:\xampp\php\pear\') in C:\xampp\htdocs\xyz\library\Zend\Loader.php on line 146

Fatal error: Class 'Application_Model_Services' not found in C:\xampp\htdocs\xyz\application\controllers\LoginController.php on line 61

有什么想法吗,先生?

无法修改您的代码。你在这里有很多事情要做。如果您想一次解决一个问题,可以。
我将给你一些在我刚加入采埃孚时帮助我的提示

  • RTFM-在文档中快速启动,并注意。我不是说读它。我的意思是把它打出来,让它发挥作用
  • 做Rob Allen的教程,以同样的方式键入并使其工作
  • 尽可能将所有内容放入application.ini。(数据库设置、库名称空间…)
  • 在学习教程时,请密切注意如何使用Zend_工具命令行界面。这将使事情变得非常简单,至少Netbeans和Zend Studio有一个接口
  • 如果您不打算使用第三方ORM,请了解应用程序模型DbTable模型及其工作方式,以及扩展Zend Db Table抽象会给您带来什么
  • 最后一件事。要将数据分配给视图,常用语法是
    $this->view->data=$data
    在视图脚本中显示该数据-
其他免费资源:
使用它


对数据库的查询应在模型中。无论如何,我建议你们更好地学习什么是MVC。@AurelioDeRosa我会的,先生,但现在我需要它,所以请修改我的代码plz@AurelioDeRosa我如何将$phone\u service\u id传递给该类,因为查询是在它上面工作的创建一个模型,您将在其中执行查询。然后以更符合您需要的形式返回结果。然后,我通常以这种方式将var分配给视图:$this->view->Url=$request->getBaseURL()。然后,在视图中,您可以这样使用它$this->urlcontribution to@AurelioDeRosa,请看这里:。您应该将查询放在单独的文件夹中model@FawadGhafoor你看起来像一个真正的人,正在努力学习如何融入SO社区。然而,经常使用“帮助我”这一短语会让人觉得你是一个好朋友,这可能会让人们不愿意帮助你。人们会帮忙的,这就是他们来这里的原因,耐心点:)