本文整理汇总了PHP中Ethna_Controller类的典型用法代码示例。如果您正苦于以下问题:PHP Ethna_Controller类的具体用法?PHP Ethna_Controller怎么用?PHP Ethna_Controller使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Ethna_Controller类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* Ethna_Filterのコンストラクタ
*
* @access public
* @param object Ethna_Controller &$controller コントローラオブジェクト
*/
public function __construct(&$controller)
{
// オブジェクトの設定
$this->controller = $controller;
$this->ctl = $this->controller;
$this->config = $controller->getConfig();
$this->logger = $this->controller->getLogger();
}
示例2: setUp
function setUp()
{
$ctl = new Ethna_Controller();
$ctl->setClientEncoding('EUC-JP');
$ctl->setActionForm(new Ethna_ActionForm($ctl));
$this->local_ctl = $ctl;
$plugin = $ctl->getPlugin();
$this->vld = $plugin->getPlugin('Validator', 'Strmincompat');
}
示例3: _validateArgList
/**
* check arguments
*
* @access private
*/
function _validateArgList()
{
$arg_list = array();
if (count($this->arg_list) < 1) {
return Ethna::raiseError('too few argments', 'usage');
} else {
if (count($this->arg_list) > 2) {
return Ethna::raiseError('too many argments', 'usage');
} else {
if (count($this->arg_list) == 1) {
$arg_list[] = $this->arg_list[0];
$arg_list[] = getcwd();
} else {
$arg_list = $this->arg_list;
}
}
}
$r = Ethna_Controller::checkAppId($arg_list[0]);
if (Ethna::isError($r)) {
return $r;
}
if (is_dir($arg_list[1]) == false) {
return Ethna::raiseError("no such directory [{$arg_list[1]}]");
}
return $arg_list;
}
示例4: perform
/**
* add action entry point
*
* @access public
*/
function perform()
{
$r = $this->_getopt(array('basedir=', 'skelfile=', 'gateway='));
if (Ethna::isError($r)) {
return $r;
}
list($opt_list, $arg_list) = $r;
// action_name
$action_name = array_shift($arg_list);
if ($action_name == null) {
return Ethna::raiseError('action name isn\'t set.', 'usage');
}
$r = Ethna_Controller::checkActionName($action_name);
if (Ethna::isError($r)) {
return $r;
}
// add entry point
$ret = $this->_perform('EntryPoint', $action_name, $opt_list);
if (Ethna::isError($ret) || $ret === false) {
return $ret;
}
// add action (no effects if already exists.)
$ret = $this->_perform('Action', $action_name, $opt_list);
if (Ethna::isError($ret) || $ret === false) {
return $ret;
}
return true;
}
示例5: Ethna_Error
/**
* Ethna_Errorクラスのコンストラクタ
*
* @access public
* @param int $level エラーレベル
* @param string $message エラーメッセージ
* @param int $code エラーコード
* @param array $userinfo エラー追加情報(エラーコード以降の全ての引数)
*/
function Ethna_Error($message = null, $code = null, $mode = null, $options = null)
{
$controller =& Ethna_Controller::getInstance();
if ($controller !== null) {
$this->i18n =& $controller->getI18N();
}
// $options以降の引数->$userinfo
if (func_num_args() > 4) {
$userinfo = array_slice(func_get_args(), 4);
if (count($userinfo) == 1) {
if (is_array($userinfo[0])) {
$userinfo = $userinfo[0];
} else {
if (is_null($userinfo[0])) {
$userinfo = array();
}
}
}
} else {
$userinfo = array();
}
// メッセージ補正処理
if (is_null($message)) {
// $codeからメッセージを取得する
$message = $controller->getErrorMessage($code);
if (is_null($message)) {
$message = 'unkown error';
}
}
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
// Ethnaフレームワークのエラーハンドラ(PEAR_Errorのコールバックとは異なる)
Ethna::handleError($this);
}
示例6: getInstance
/**
* Cachemaanger プラグインのインスタンスを取得する
*
* @param string $type キャッシュタイプ('localfile', 'memcache'...)
* @return object Ethna_Plugin_CacheMaanger Cachemanager プラグインのインスタンス
* @access public
*/
public static function getInstance($type)
{
$controller = Ethna_Controller::getInstance();
$plugin = $controller->getPlugin();
$cache_manager = $plugin->getPlugin('Cachemanager', ucfirst($type));
return $cache_manager;
}
示例7: preforward
/**
* 遷移前処理
*
* @access public
*/
function preforward()
{
// タイムアウトしないように変更
$max_execution_time = ini_get('max_execution_time');
set_time_limit(0);
if (!headers_sent()) {
// キャッシュしない
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s \\G\\M\\T"));
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
$ctl =& Ethna_Controller::getInstance();
// cores
$this->af->setApp('app_id', $ctl->getAppId());
$this->af->setApp('ethna_version', ETHNA_VERSION);
// include
$inc = sprintf("%s/%s_UnitTestManager.php", $ctl->getDirectory('app'), $ctl->getAppId());
@(include_once "{$inc}");
// run
$r = sprintf("%s_UnitTestManager", $ctl->getAppId());
$ut =& new $r($this->backend);
list($report, $result) = $ut->run();
// result
$this->af->setApp('report', $report);
$this->af->setApp('result', $result);
// タイムアウトを元に戻す
set_time_limit($max_execution_time);
}
示例8: log
/**
* ログを出力する
*
* @access public
* @param int $level ログレベル(LOG_DEBUG, LOG_NOTICE...)
* @param string $message ログメッセージ(+引数)
*/
function log($level, $message)
{
$c = Ethna_Controller::getInstance();
$prefix = $this->ident;
if (array_key_exists("pid", $this->option)) {
$prefix .= sprintf('[%d]', getmypid());
}
$prefix .= sprintf($c->getGateway() != GATEWAY_WWW ? '(%s): ' : '(<b>%s</b>): ', $this->_getLogLevelName($level));
if (array_key_exists("function", $this->option) || array_key_exists("pos", $this->option)) {
$tmp = "";
$bt = $this->_getBacktrace();
if ($bt && array_key_exists("function", $this->option) && $bt['function']) {
$tmp .= $bt['function'];
}
if ($bt && array_key_exists("pos", $this->option) && $bt['pos']) {
$tmp .= $tmp ? sprintf('(%s)', $bt['pos']) : $bt['pos'];
}
if ($tmp) {
$prefix .= $tmp . ": ";
}
}
$br = $c->getGateway() != GATEWAY_WWW ? "" : "<br />";
echo $prefix . $message . $br . "\n";
return $prefix . $message;
}
示例9: perform
/**
* add view
*
* @access public
*/
function perform()
{
$r =& $this->_getopt(array('basedir=', 'skelfile=', 'template'));
if (Ethna::isError($r)) {
return $r;
}
list($opt_list, $arg_list) = $r;
// view_name
$view_name = array_shift($arg_list);
if ($view_name == null) {
return Ethna::raiseError('view name isn\'t set.', 'usage');
}
$r =& Ethna_Controller::checkViewName($view_name);
if (Ethna::isError($r)) {
return $r;
}
// add view
$ret =& $this->_perform('View', $view_name, $opt_list);
if (Ethna::isError($ret) || $ret === false) {
return $ret;
}
// add template
if (isset($opt_list['template'])) {
$ret =& $this->_perform('Template', $view_name, $opt_list);
if (Ethna::isError($ret) || $ret === false) {
return $ret;
}
}
return true;
}
示例10: foreach
/**
* (non-PHPdoc)
* @see class/Ethna_Controller#_getActionName_Form()
*/
function _getActionName_Form()
{
if (isset($_SERVER['REQUEST_METHOD']) == false) {
return null;
}
if (strcasecmp($_SERVER['REQUEST_METHOD'], 'post') == 0) {
$http_vars =& $_POST;
} else {
$http_vars =& $_GET;
}
foreach ($http_vars as $name => $value) {
if ($value == "" || strncmp($name, 'action_', 7) != 0) {
continue;
}
// オリジナル方式 http://hostname/?action_action_name
return parent::_getActionName_Form();
}
// かっこいい http://hostname/action/name/ 方式
if (!empty($_SERVER['REDIRECT_URL'])) {
$redirect_url = $_SERVER['REDIRECT_URL'];
$action_name = str_replace('/', '_', $redirect_url);
return trim($action_name, '_');
}
// まあ悪くはない http://hostname/?action=action_name 方式
if (array_key_exists('action', $http_vars)) {
return $http_vars['action'];
}
}
示例11: setUp
function setUp()
{
$ctl = Ethna_Controller::getInstance();
$plugin = $ctl->getPlugin();
$this->vld = $plugin->getPlugin('Validator', 'Strmax');
$this->ctl = $ctl;
}
示例12: perform
/**
* add action
*
* @access public
*/
function perform()
{
//
// '-w[with-unittest]' and '-u[unittestskel]' option
// are not intuisive, but I dare to define them because
// -t and -s option are reserved by add-[action|view] handle
// and Ethna_Getopt cannot interpret two-character option.
//
$r = $this->_getopt(array('basedir=', 'skelfile=', 'gateway=', 'with-unittest', 'unittestskel='));
if (Ethna::isError($r)) {
return $r;
}
list($opt_list, $arg_list) = $r;
// action_name
$action_name = array_shift($arg_list);
if ($action_name == null) {
return Ethna::raiseError('action name isn\'t set.', 'usage');
}
$r =& Ethna_Controller::checkActionName($action_name);
if (Ethna::isError($r)) {
return $r;
}
$ret =& $this->_perform('Action', $action_name, $opt_list);
return $ret;
}
示例13: smarty_modifier_i18n
/**
* smarty modifier:i18nフィルタ
*
* sample:
* <code>
* {"you have %d apples"|i18n:$n}
* </code>
* <code>
* あなたはリンゴを3つ持っています。
* </code>
*
* @param string $string i18n処理対象の文字列
* @param mixed $val 任意のパラメータ
* @return string ロケールに対応したメッセージ
*/
function smarty_modifier_i18n($string, $arg1 = null)
{
$c = Ethna_Controller::getInstance();
$i18n = $c->getI18N();
$msg = $i18n->get($string);
return sprintf($msg, $arg1);
}
示例14: __construct
/**
* Ethna_UnitTestManagerのコンストラクタ
*
* @access public
* @param object Ethna_Backend &$backend Ethna_Backendオブジェクト
*/
public function __construct($backend)
{
parent::__construct($backend);
$this->ctl = Ethna_Controller::getInstance();
$this->class_factory = $this->ctl->getClassFactory();
$this->testcase = array_merge($this->testcase, $this->_getTestCaseList());
}
示例15: smarty_modifier_wordwrap_i18n
/**
* smarty modifier:文字列のwordwrap処理
*
* sample:
* <code>
* {"あいうaえaおaかきaaaくけこ"|wordwrap_i18n:8}
* </code>
* <code>
* あいうa
* えaおaか
* きaaaく
* けこ
* </code>
*
* @param string $string wordwrapする文字列
* @param string $break 改行文字
* @param int $width wordwrap幅(半角$width文字でwordwrapする)
* @param int $indent インデント幅(半角$indent文字)
* 数値を指定するが、はじめの行はインデントされない
* @return string wordwrap処理された文字列
*/
function smarty_modifier_wordwrap_i18n($string, $width, $break = "\n", $indent = 0)
{
$ctl = Ethna_Controller::getInstance();
$client_enc = $ctl->getClientEncoding();
// いわゆる半角を単位にしてwrapする位置を測るため、いったん
// EUC_JP に変換する
$euc_string = mb_convert_encoding($string, 'EUC_JP', $client_enc);
$r = "";
$i = "{$break}" . str_repeat(" ", $indent);
$tmp = $euc_string;
do {
$n = strpos($tmp, $break);
if ($n !== false && $n < $width) {
$s = substr($tmp, 0, $n);
$r .= $s . $i;
$tmp = substr($tmp, strlen($s) + strlen($break));
continue;
}
$s = mb_strimwidth($tmp, 0, $width, "", 'EUC_JP');
$tmp = substr($tmp, strlen($s));
$r .= $s . (strlen($tmp) > 0 ? $i : '');
} while (strlen($tmp) > 0);
// 最後に、クライアントエンコーディングに変換
$r = mb_convert_encoding($r, $client_enc, 'EUC_JP');
return $r;
}