本文整理汇总了PHP中Ethna_Controller::getInstance方法的典型用法代码示例。如果您正苦于以下问题:PHP Ethna_Controller::getInstance方法的具体用法?PHP Ethna_Controller::getInstance怎么用?PHP Ethna_Controller::getInstance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ethna_Controller
的用法示例。
在下文中一共展示了Ethna_Controller::getInstance方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __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());
}
示例2: 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);
}
示例3: smarty_function_form_name
/**
* smarty function:フォーム表示名生成
*
* @param string $name フォーム項目名
*/
function smarty_function_form_name($params, &$smarty)
{
// name
if (isset($params['name'])) {
$name = $params['name'];
unset($params['name']);
} else {
return null;
}
// view object
$c =& Ethna_Controller::getInstance();
$view =& $c->getView();
if ($view === null) {
return null;
}
// action
$action = null;
if (isset($params['action'])) {
$action = $params['action'];
unset($params['action']);
} else {
for ($i = count($smarty->_tag_stack); $i >= 0; --$i) {
if ($smarty->_tag_stack[$i][0] === 'form') {
if (isset($smarty->_tag_stack[$i][1]['ethna_action'])) {
$action = $smarty->_tag_stack[$i][1]['ethna_action'];
}
break;
}
}
}
if ($action !== null) {
$view->addActionFormHelper($action);
}
return $view->getFormName($name, $action, $params);
}
示例4: 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;
}
示例5: 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;
}
示例6: 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;
}
示例7: ucfirst
/**
* Cachemaanger プラグインのインスタンスを取得する
*
* @param string $type キャッシュタイプ('localfile', 'memcache'...)
* @return object Ethna_Plugin_CacheMaanger Cachemanager プラグインのインスタンス
* @access public
*/
function &getInstance($type)
{
$controller =& Ethna_Controller::getInstance();
$plugin =& $controller->getPlugin();
$cache_manager =& $plugin->getPlugin('Cachemanager', ucfirst($type));
return $cache_manager;
}
示例8: setUp
function setUp()
{
$ctl = Ethna_Controller::getInstance();
$plugin = $ctl->getPlugin();
$this->vld = $plugin->getPlugin('Validator', 'Strmax');
$this->ctl = $ctl;
}
示例9: Ethna_UnitTestManager
/**
* Ethna_UnitTestManagerのコンストラクタ
*
* @access public
* @param object Ethna_Backend &$backend Ethna_Backendオブジェクト
*/
function Ethna_UnitTestManager(&$backend)
{
parent::Ethna_AppManager($backend);
$this->ctl =& Ethna_Controller::getInstance();
$this->class_factory =& $this->ctl->getClassFactory();
$this->testcase = array_merge($this->testcase, $this->_getTestCaseList());
}
示例10: 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);
}
示例11: 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);
}
示例12: testCachemanagerLocalfile
function testCachemanagerLocalfile()
{
$ctl =& Ethna_Controller::getInstance();
$plugin =& $ctl->getPlugin();
$cm = $plugin->getPlugin('Cachemanager', 'Localfile');
// 文字列のキャッシュ
$string_key = 'string_key';
$string_value = "cache\ncontent";
$cm->set($string_key, $string_value, mktime(0, 0, 0, 7, 1, 2000));
$cache_string = $cm->get($string_key);
$this->assertTrue($cm->isCached($string_key));
$this->assertEqual(mktime(0, 0, 0, 7, 1, 2000), $cm->getLastModified($string_key));
$this->assertTrue($string_value, $cache_string);
// 整数のキャッシュ + namespace
$int_key = 'int_key';
$int_value = 777;
$namespace = 'test';
$cm->set($int_key, $int_value, mktime(0, 0, 0, 7, 1, 2000), $namespace);
$cache_int = $cm->get($int_key, mktime(0, 0, 0, 7, 1, 2000), $namespace);
$this->assertTrue($cm->isCached($int_key, mktime(0, 0, 0, 7, 1, 2000), $namespace));
$this->assertTrue($int_value, $cache_int);
// オブジェクトのキャッシュ
$object_key = 'object_key';
$object_value =& $cm;
$cm->set($object_key, $object_value);
$this->assertTrue($cm->isCached($object_key));
// キャッシュされたインスタンス
$cache_object = $cm->get($object_key);
$this->assertTrue($string_value, $cache_object->get($string_key));
// キャッシュのクリアをテスト
$cm->clear($object_key);
$this->assertFalse($cm->isCached($object_key));
// キャッシュされていないのに呼び出そうとした場合
$nocache_key = 'nocache_key';
$cm->clear($nocache_key);
$pear_error = $cm->get($nocache_key);
$this->assertEqual(E_CACHE_NO_VALUE, $pear_error->getCode());
$this->assertEqual('fopen failed', $pear_error->getMessage());
// ファイルに読み込み権限がない場合
Ethna_Util::chmod($cm->_getCacheFile(null, $string_key), 0222);
$pear_error = $cm->get($string_key);
$this->assertEqual(E_CACHE_NO_VALUE, $pear_error->getCode());
$this->assertEqual('fopen failed', $pear_error->getMessage());
Ethna_Util::chmod($cm->_getCacheFile(null, $string_key), 0666);
// lifetime切れの場合
$pear_error = $cm->get($string_key, 1);
$this->assertEqual(E_CACHE_EXPIRED, $pear_error->getCode());
$this->assertEqual('fopen failed', $pear_error->getMessage());
// ディレクトリ名と同じファイルがあってディレクトリが作成できない場合
$tmp_key = 'tmpkey';
$tmp_dirname = $cm->_getCacheDir(null, $tmp_key);
Ethna_Util::mkdir(dirname($tmp_dirname), 0777);
$tmp_file = fopen($tmp_dirname, 'w');
fclose($tmp_file);
$pear_error = $cm->set($tmp_key, $string_value);
$this->assertEqual(E_USER_WARNING, $pear_error->getCode());
$this->assertEqual("mkdir({$tmp_dirname}) failed", $pear_error->getMessage());
$this->rm($cm->backend->getTmpdir());
}
示例13: smarty_block_form
/**
* smarty block:フォームタグ出力プラグイン
*/
function smarty_block_form($params, $content, &$smarty, &$repeat)
{
if ($repeat) {
// {form}: ブロック内部に進む前の処理
// default
if (isset($params['default']) === false) {
// 指定なしのときは $form を使う
$c = Ethna_Controller::getInstance();
$af = $c->getActionForm();
// c.f. http://smarty.php.net/manual/en/plugins.block.functions.php
$smarty->_tag_stack[count($smarty->_tag_stack) - 1][1]['default'] = $af->getArray(false);
}
// 動的フォームヘルパを呼ぶ
if (isset($params['ethna_action'])) {
$ethna_action = $params['ethna_action'];
$c = Ethna_Controller::getInstance();
$view = $c->getView();
$view->addActionFormHelper($ethna_action, true);
}
// ここで返す値は出力されない
return '';
} else {
// {/form}: ブロック全体を出力
$c = Ethna_Controller::getInstance();
$view = $c->getView();
if ($view === null) {
return null;
}
// ethna_action
if (isset($params['ethna_action'])) {
$ethna_action = $params['ethna_action'];
unset($params['ethna_action']);
$view->addActionFormHelper($ethna_action);
$hidden = $c->getActionRequest($ethna_action, 'hidden');
$content = $hidden . $content;
//デバグ用に、送信先のアクション名を表示する
//超絶便利。これのおかげて開発効率だいぶあがった。
if ($c->getConfig()->get('showFormActionName')) {
echo "[" . $ethna_action . "]";
}
}
// enctype の略称対応
if (isset($params['enctype'])) {
if ($params['enctype'] == 'file' || $params['enctype'] == 'multipart') {
$params['enctype'] = 'multipart/form-data';
} else {
if ($params['enctype'] == 'url') {
$params['enctype'] = 'application/x-www-form-urlencoded';
}
}
}
// defaultはもう不要
if (isset($params['default'])) {
unset($params['default']);
}
// $contentを囲む<form>ブロック全体を出力
return $view->getFormBlock($content, $params);
}
}
示例14: testMakeInstance
function testMakeInstance()
{
$ctl = Ethna_Controller::getInstance();
$plugin = $ctl->getPlugin();
$this->csrf = $plugin->getPlugin('Csrf', 'Session');
$this->assertTrue(is_object($this->csrf), 'getPlugin failed');
$this->csrf->session = new Ethna_Session_Dummy($ctl, $ctl->appid);
}
示例15: setUp
function setUp()
{
$ctl = Ethna_Controller::getInstance();
$plugin = $ctl->getPlugin();
$config = $ctl->getConfig();
$config->set('plugin', array('cachemanager' => array('memcache' => array('host' => 'localhost', 'port' => 11211, 'use_pconnect' => false, 'retry' => 4, 'timeout' => 5, 'info' => array('namespace1' => array(0 => array('host' => 'cache1.example.com', 'port' => 11211), 1 => array('host' => 'cache2.example.com', 'port' => 11211)))))));
$this->cm = $plugin->getPlugin('Cachemanager', 'Memcache');
}