Source for file DevHelper.php

Documentation is available at DevHelper.php

  1. <?php
  2. /**
  3.  * Teeple2 - PHP5 Web Application Framework inspired by Seasar2
  4.  *
  5.  * PHP versions 5
  6.  *
  7.  * LICENSE: This source file is subject to version 3.0 of the PHP license
  8.  * that is available through the world-wide-web at the following URI:
  9.  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  10.  * the PHP License and are unable to obtain it through the web, please
  11.  * send a note to license@php.net so we can mail you a copy immediately.
  12.  *
  13.  * @package     teeple
  14.  * @author      Mitsutaka Sato <miztaka@gmail.com>
  15.  * @license     http://www.php.net/license/3_0.txt  PHP License 3.0
  16.  */
  17.  
  18. require_once SMARTY_DIR ."Smarty.class.php";
  19.  
  20. /**
  21.  * Actionクラスを自動生成するためのクラスです。
  22.  *
  23.  * @package teeple
  24.  */
  25.  
  26.     /**
  27.      * @var Logger 
  28.      */
  29.     protected $log;
  30.     
  31.     /**
  32.      * @var Teeple_Request 
  33.      */
  34.     protected $request;
  35.     public function setComponent_Teeple_Request($c{
  36.         $this->request = $c;
  37.     }
  38.  
  39.     /**
  40.      * @var Teeple_Session 
  41.      */
  42.     protected $session;
  43.     public function setComponent_Teeple_Session($c{
  44.         $this->session = $c;
  45.     }
  46.     
  47.     /**
  48.      * @var Teeple_ActionChain 
  49.      */
  50.     protected $actionChain;
  51.     public function setComponent_Teeple_ActionChain($c{
  52.         $this->actionChain = $c;
  53.     }
  54.     
  55.     /**
  56.      * @var Teeple_FileUtil 
  57.      */
  58.     protected $fileutil;
  59.     public function setPrototype_Teeple_FileUtil($c{
  60.         $this->fileutil = $c;
  61.     }
  62.     
  63.     /**
  64.      * @var Teeple_FilterChain 
  65.      */
  66.     protected $filterChain;
  67.     public function setComponent_Teeple_FilterChain($c{
  68.         $this->filterChain = $c;
  69.     }
  70.     
  71.     /**
  72.      * コンストラクタです。
  73.      */
  74.     public function __construct({
  75.         $this->log = LoggerManager::getLogger(get_class($this));
  76.     }
  77.     
  78.     public function execute($actionName{
  79.         
  80.         // 作成モードであれば、Actionクラスと設定ファイルを作成
  81.         if ($this->request->getParameter('__CREATE_ACTION'== 1{
  82.             $this->createActionTemplate($actionName);
  83.         else {
  84.             $this->confirmPage($actionName);
  85.         }
  86.     }
  87.     
  88.     private function createActionTemplate($actionName{
  89.         
  90.         $this->log->debug("Actionクラスの雛形を作成します。");
  91.         list($className$classfile$templatefile$this->makeNames($actionName);
  92.         
  93.         $renderer new Smarty();
  94.         $renderer->template_dir VIEW_TEMPLATE_DIR;
  95.         $renderer->compile_dir VIEW_COMPILE_DIR;
  96.         $renderer->assign('className'$className);
  97.         $renderer->assign('actionName'$actionName);
  98.         $renderer->assign('templatefile'$templatefile);
  99.         
  100.         if (!@file_exists($classfile)) {
  101.             $result $renderer->fetch('devhelper/template/Action.class.php.txt');
  102.             if ($this->fileutil->write($classfile$result)) {
  103.                 print "Actionクラスの自動生成に失敗しました。ファイルが作成できません。";
  104.                 return;
  105.             }
  106.         }
  107.         if (!@file_exists($templatefile)) {
  108.             $result $renderer->fetch('devhelper/template/template.html');
  109.             if ($this->fileutil->write($templatefile$result)) {
  110.                 print "HTMLの自動生成に失敗しました。ファイルが作成できません。";
  111.                 return;
  112.             }
  113.         }
  114.         print "Actionクラスを自動生成しました。{$classfile} <br/>";
  115.         
  116.         $this->actionChain->add($actionName);
  117.         return;
  118.     }
  119.  
  120.     private function confirmPage($actionName{
  121.         
  122.         list($className$classfile$templatefile$this->makeNames($actionName);
  123.         
  124.         $isClassfile "新規作成";
  125.         $isTemplatefile "新規作成";
  126.         if (@file_exists($classfile)) {
  127.             $isClassfile "存在します";
  128.         }
  129.         if (@file_exists($templatefile)) {
  130.             $isTemplatefile "存在します";
  131.         }
  132.         
  133.         $renderer Teeple_Smarty4Maple::getInstance();
  134.         $renderer->assign('actionName'$actionName);
  135.         $renderer->assign('classfile'$classfile);
  136.         $renderer->assign('templatefile'$templatefile);
  137.         $renderer->assign('isClassfile'$isClassfile);
  138.         $renderer->assign('isTemplatefile'$isTemplatefile);
  139.         $result $renderer->fetch('devhelper/confirm.html');
  140.         print $result;
  141.         exit;
  142.     }
  143.     
  144.     private function makeNames($actionName{
  145.         
  146.         $className Teeple_Util::capitalizedClassName($actionName);
  147.         
  148.         $ar split('_',$actionName);
  149.         $action array_pop($ar);
  150.         
  151.         $basedir MODULE_DIR .'/'implode('/'$ar.'/';
  152.         
  153.         $classfile $basedir ucfirst($action".php";
  154.         $templatefile $basedir $action .".html"
  155.         $this->log->debug("classファイル: {$classfile}");
  156.         $this->log->debug("templateファイル: {$templatefile}");
  157.  
  158.         return array($className$classfile$templatefile);
  159.     }
  160.  
  161. }
  162.  
  163. ?>

Documentation generated on Mon, 26 Apr 2010 08:59:42 +0900 by phpDocumentor 1.4.3