本文整理汇总了PHP中Ethna_Util::getUrlFromRequestUri方法的典型用法代码示例。如果您正苦于以下问题:PHP Ethna_Util::getUrlFromRequestUri方法的具体用法?PHP Ethna_Util::getUrlFromRequestUri怎么用?PHP Ethna_Util::getUrlFromRequestUri使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ethna_Util
的用法示例。
在下文中一共展示了Ethna_Util::getUrlFromRequestUri方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handle
/**
* フレームワークの処理を実行する(WWW)
*
* 引数$default_action_nameに配列が指定された場合、その配列で指定された
* アクション以外は受け付けない(指定されていないアクションが指定された
* 場合、配列の先頭で指定されたアクションが実行される)
*
*/
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) : Response
{
$default_action_name = $this->default_action_name;
self::$instance = $this;
Ethna::setErrorCallback(array($this, 'handleError'));
$this->container = new Ethna_Container(BASE, $this->directory, $this->class, $this->appid, $this->locale, $this->sessionName);
$this->directory = $this->container->getDirectories();
$config = $this->container->getConfig();
$url = $config->get('url');
if (empty($url)) {
$url = Ethna_Util::getUrlFromRequestUri();
$config->set('url', $url);
}
$this->container->url = $url;
$plugin = $this->container->getPlugin();
$this->logger = $this->container->getLogger();
$plugin->setLogger($this->logger);
$this->logger->begin();
$actionDir = $this->directory['action'] . "/";
$default_form_class = $this->class['form'];
$actionResolverClass = $this->class['action_resolver'];
/** @var Ethna_ActionResolver $actionResolver */
$actionResolver = new $actionResolverClass($this->container->getAppId(), $this->logger, $default_form_class, $actionDir);
$this->container->setActionResolver($actionResolver);
// アクション名の取得
$action_name = $actionResolver->resolveActionName($request, $default_action_name);
$this->container->setCurrentActionName($action_name);
$this->container->getSession()->restore();
$i18n = $this->container->getI18N();
$i18n->setLanguage($this->locale);
// アクションフォーム初期化
// フォーム定義、フォーム値設定
$action_form = $actionResolver->newActionForm($action_name, $this->container);
$this->container->setActionForm($action_form);
$viewResolver = new Ethna_ViewResolver($this->container, $this->logger, $this->container->getViewdir(), $this->container->getAppId(), $this->class['view']);
$callable = $actionResolver->getController($request, $action_name, $this->container, $action_form, $viewResolver);
$arguments = [$request];
$response = call_user_func_array($callable, $arguments);
return $response;
}
示例2: __construct
/**
* Ethna_Controllerクラスのコンストラクタ
*
* @access public
*/
public function __construct($gateway = GATEWAY_WWW)
{
$this->setupEventDispatcher();
$this->registerSubscriber();
$GLOBALS['_Ethna_controller'] = $this;
if ($this->base === "") {
// EthnaコマンドなどでBASEが定義されていない場合がある
if (defined('BASE')) {
$this->base = BASE;
}
}
$this->gateway = $gateway;
// クラス設定の未定義値を補完
foreach ($this->class_default as $key => $val) {
if (isset($this->class[$key]) == false) {
$this->class[$key] = $val;
}
}
// ディレクトリ設定の未定義値を補完
foreach ($this->directory_default as $key => $val) {
if (isset($this->directory[$key]) == false) {
$this->directory[$key] = $val;
}
}
// クラスファクトリオブジェクトの生成
$class_factory = $this->class['class'];
$this->class_factory = new $class_factory($this, $this->class);
// ログ管理オブジェクトの用意
$this->logger = $this->getLogger();
// エラーハンドラの設定
Ethna::setErrorCallback(array($this, 'handleError'));
// ディレクトリ名の設定(相対パス->絶対パス)
foreach ($this->directory as $key => $value) {
if ($key == 'plugins') {
// Smartyプラグインディレクトリは配列で指定する
$tmp = array();
foreach (to_array($value) as $elt) {
if (Ethna_Util::isAbsolute($elt) == false) {
$tmp[] = $this->base . (empty($this->base) ? '' : '/') . $elt;
}
}
$this->directory[$key] = $tmp;
} else {
if (Ethna_Util::isAbsolute($value) == false) {
$this->directory[$key] = $this->base . (empty($this->base) ? '' : '/') . $value;
}
}
}
// 遷移先設定をマージ
// 但し、キーは完全に維持する
$this->forward = $this->forward + $this->forward_default;
// 初期設定
// フレームワークとしての内部エンコーディングはクライアント
// エンコーディング(=ブラウザからのエンコーディング)
//
// @see Ethna_Controller#_getDefaultLanguage
list($this->locale, $this->system_encoding, $this->client_encoding) = $this->_getDefaultLanguage();
if (extension_loaded('mbstring')) {
mb_internal_encoding($this->client_encoding);
mb_regex_encoding($this->client_encoding);
}
$this->config = $this->getConfig();
$this->dsn = $this->_prepareDSN();
$this->url = $this->config->get('url');
if (empty($this->url) && PHP_SAPI != 'cli') {
$this->url = Ethna_Util::getUrlFromRequestUri();
$this->config->set('url', $this->url);
}
// プラグインオブジェクトの用意
$this->plugin = $this->getPlugin();
$this->plugin->setLogger($this->logger);
// include Ethna_Plugin_Abstract for all plugins
$this->plugin->includePlugin('Abstract');
// ログ出力開始
$this->logger->begin();
}
示例3: __construct
/**
* Ethna_Controllerクラスのコンストラクタ
*
* @access public
*/
public function __construct($gateway = GATEWAY_WWW)
{
mb_internal_encoding($this->encoding);
mb_regex_encoding($this->encoding);
$GLOBALS['_Ethna_controller'] = $this;
if ($this->base === "") {
// EthnaコマンドなどでBASEが定義されていない場合がある
if (defined('BASE')) {
$this->base = BASE;
}
}
$this->gateway = $gateway;
// クラス設定の未定義値を補完
foreach ($this->class_default as $key => $val) {
if (isset($this->class[$key]) == false) {
$this->class[$key] = $val;
}
}
// ディレクトリ設定の未定義値を補完
foreach ($this->directory_default as $key => $val) {
if (isset($this->directory[$key]) == false) {
$this->directory[$key] = $val;
}
}
// クラスファクトリオブジェクトの生成
$class_factory = $this->class['class'];
$this->class_factory = new $class_factory($this, $this->class);
// エラーハンドラの設定
Ethna::setErrorCallback(array($this, 'handleError'));
// ディレクトリ名の設定(相対パス->絶対パス)
foreach ($this->directory as $key => $value) {
if ($key == 'plugins') {
// Smartyプラグインディレクトリは配列で指定する
$tmp = array();
foreach (to_array($value) as $elt) {
if (Ethna_Util::isAbsolute($elt) == false) {
$tmp[] = $this->base . (empty($this->base) ? '' : '/') . $elt;
}
}
$this->directory[$key] = $tmp;
} else {
if (Ethna_Util::isAbsolute($value) == false) {
$this->directory[$key] = $this->base . (empty($this->base) ? '' : '/') . $value;
}
}
}
// 遷移先設定をマージ
// 但し、キーは完全に維持する
$this->forward = $this->forward + $this->forward_default;
// 初期設定
$this->locale = 'ja_JP';
$this->config = $this->getConfig();
$this->dsn = $this->_prepareDSN();
$this->url = $this->config->get('url');
if (empty($this->url) && PHP_SAPI != 'cli') {
$this->url = Ethna_Util::getUrlFromRequestUri();
$this->config->set('url', $this->url);
}
// プラグインオブジェクトの用意
$this->plugin = $this->getPlugin();
//// assert (experimental)
//if ($this->config->get('debug') === false) {
// ini_set('assert.active', 0);
//}
// ログ出力開始
$this->logger = $this->getLogger();
$this->plugin->setLogger($this->logger);
$this->logger->begin();
}