クラス yii\BaseYii
継承 | yii\BaseYii |
---|---|
サブクラス | Yii |
利用可能バージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/BaseYii.php |
BaseYiiはYiiフレームワークのコアヘルパークラスです。
BaseYiiを直接使用しないでください。代わりに、子クラスのYiiを使用してください。これはBaseYiiのメソッドをカスタマイズするために置き換えることができます。
公開プロパティ
プロパティ | 型 | 説明 | 定義元 |
---|---|---|---|
$aliases | array | 登録されたパスエイリアス | yii\BaseYii |
$app | yii\console\Application|yii\web\Application | アプリケーションインスタンス | yii\BaseYii |
$classMap | array | Yiiの自動読み込みメカニズムで使用されるクラスマップ。 | yii\BaseYii |
$container | yii\di\Container | createObject()で使用される依存性注入(DI)コンテナ。 | yii\BaseYii |
公開メソッド
メソッド | 説明 | 定義元 |
---|---|---|
autoload() | クラスの自動読み込みローダー。 | yii\BaseYii |
beginProfile() | プロファイリングのためのコードブロックの開始をマークします。 | yii\BaseYii |
configure() | 初期プロパティ値でオブジェクトを設定します。 | yii\BaseYii |
createObject() | 与えられた設定を使用して新しいオブジェクトを作成します。 | yii\BaseYii |
debug() | デバッグメッセージをログに記録します。 | yii\BaseYii |
endProfile() | プロファイリングのためのコードブロックの終了をマークします。 | yii\BaseYii |
error() | エラーメッセージをログに記録します。 | yii\BaseYii |
getAlias() | パスエイリアスを実際のパスに変換します。 | yii\BaseYii |
getLogger() | yii\BaseYii | |
getObjectVars() | オブジェクトのパブリックメンバ変数を返します。 | yii\BaseYii |
getRootAlias() | 指定されたエイリアスのルートエイリアスパートを返します。 | yii\BaseYii |
getVersion() | Yiiフレームワークの現在のバージョンを表す文字列を返します。 | yii\BaseYii |
info() | 情報メッセージをログに記録します。 | yii\BaseYii |
powered() | 「Yii Framework を使用して構築」情報を表示する、Webページに表示できるHTMLハイパーリンクを返します。 | yii\BaseYii |
setAlias() | パスエイリアスを登録します。 | yii\BaseYii |
setLogger() | ロガーオブジェクトを設定します。 | yii\BaseYii |
t() | メッセージを指定された言語に翻訳します。 | yii\BaseYii |
trace() | debug()のエイリアス。 | yii\BaseYii |
warning() | 警告メッセージをログに記録します。 | yii\BaseYii |
プロパティの詳細
アプリケーションインスタンス
Yiiの自動読み込みメカニズムで使用されるクラスマップ。配列のキーはクラス名(先頭のバックスラッシュなし)、配列の値は対応するクラスファイルパス(またはパスエイリアス)です。このプロパティは主にautoload()の動作に影響します。
autoload()も参照してください。
createObject()で使用される依存性注入(DI)コンテナ。クラスに必要な依存関係と初期プロパティ値を設定するには、yii\di\Container::set()を使用できます。
参照
メソッドの詳細
クラスの自動読み込みローダー。
このメソッドは、PHPが未知のクラスを検出すると自動的に呼び出されます。このメソッドは、次の手順に従ってクラスファイルのインクルードを試みます。
- $classMapを検索します。
- クラスに名前空間がある場合(例:
yii\base\Component
)、対応するパスエイリアス(例:@yii/base/Component.php
)に関連付けられたファイルのインクルードを試みます。
このオートローダーにより、PSR-4標準に従い、最上位の名前空間またはサブ名前空間がパスエイリアスとして定義されているクラスの読み込みが可能になります。
例:エイリアス@yii
と@yii/bootstrap
が定義されている場合、yii\bootstrap
名前空間のクラスは、bootstrap拡張ファイルがインストールされているディレクトリを指す@yii/bootstrap
エイリアスを使用して読み込まれ、他のyii
名前空間のすべてのクラスはYiiフレームワークディレクトリから読み込まれます。
オートローディングに関するガイドセクションも参照してください。
public static void autoload ( $className ) | ||
$className | string |
先頭のバックスラッシュ「\」のない、完全修飾クラス名 |
スロー | yii\base\UnknownClassException |
クラスがクラスファイルに存在しない場合 |
---|
public static function autoload($className)
{
if (isset(static::$classMap[$className])) {
$classFile = static::$classMap[$className];
if (strncmp($classFile, '@', 1) === 0) {
$classFile = static::getAlias($classFile);
}
} elseif (strpos($className, '\\') !== false) {
$classFile = static::getAlias('@' . str_replace('\\', '/', $className) . '.php', false);
if ($classFile === false || !is_file($classFile)) {
return;
}
} else {
return;
}
include $classFile;
if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) {
throw new UnknownClassException("Unable to find '$className' in file: $classFile. Namespace missing?");
}
}
プロファイリングのためのコードブロックの開始をマークします。
これは、同じカテゴリ名でendProfile()を呼び出すことで対応付けられる必要があります。beginとendの呼び出しも適切にネストする必要があります。例えば、
\Yii::beginProfile('block1');
// some code to be profiled
\Yii::beginProfile('block2');
// some other code to be profiled
\Yii::endProfile('block2');
\Yii::endProfile('block1');
endProfile()も参照してください。
public static void beginProfile ( $token, $category = 'application' ) | ||
$token | string |
コードブロックのトークン |
$category | string |
このログメッセージのカテゴリ |
public static function beginProfile($token, $category = 'application')
{
static::getLogger()->log($token, Logger::LEVEL_PROFILE_BEGIN, $category);
}
初期プロパティ値でオブジェクトを設定します。
public static object configure ( $object, $properties ) | ||
$object | object |
設定されるオブジェクト |
$properties | array |
名前と値のペアで指定されたプロパティの初期値。 |
戻り値 | object |
オブジェクト自体 |
---|
public static function configure($object, $properties)
{
foreach ($properties as $name => $value) {
$object->$name = $value;
}
return $object;
}
与えられた設定を使用して新しいオブジェクトを作成します。
このメソッドは、new
演算子の拡張バージョンと見なすことができます。このメソッドは、クラス名、設定配列、または無名関数に基づいてオブジェクトの作成をサポートします。
いくつかの使用方法の例を以下に示します。
// create an object using a class name
$object = Yii::createObject('yii\db\Connection');
// create an object using a configuration array
$object = Yii::createObject([
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=demo',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
]);
// create an object with two constructor parameters
$object = \Yii::createObject('MyClass', [$param1, $param2]);
依存性注入コンテナを使用すると、このメソッドは依存オブジェクトを識別し、それらをインスタンス化して、新しく作成されたオブジェクトに注入することもできます。
yii\di\Containerも参照してください。
public static object createObject ( $type, array $params = [] ) | ||
$type | string|array|callable |
オブジェクトの種類。これは次のいずれかの形式で指定できます。
|
$params | array |
コンストラクタパラメータ |
戻り値 | object |
作成されたオブジェクト |
---|---|---|
スロー | yii\base\InvalidConfigException |
設定が無効な場合。 |
public static function createObject($type, array $params = [])
{
if (is_string($type)) {
return static::$container->get($type, $params);
}
if (is_callable($type, true)) {
return static::$container->invoke($type, $params);
}
if (!is_array($type)) {
throw new InvalidConfigException('Unsupported configuration type: ' . gettype($type));
}
if (isset($type['__class'])) {
$class = $type['__class'];
unset($type['__class'], $type['class']);
return static::$container->get($class, $params, $type);
}
if (isset($type['class'])) {
$class = $type['class'];
unset($type['class']);
return static::$container->get($class, $params, $type);
}
throw new InvalidConfigException('Object configuration must be an array containing a "class" or "__class" element.');
}
デバッグメッセージをログに記録します。
トレースメッセージは、主に開発目的で、コードの実行ワークフローを確認するためにログに記録されます。このメソッドは、アプリケーションがデバッグモードの場合にのみメッセージをログに記録します。
public static void debug ( $message, $category = 'application' ) | ||
$message | string|array |
ログに記録するメッセージ。単純な文字列または配列など、より複雑なデータ構造にすることができます。 |
$category | string |
メッセージのカテゴリ。 |
public static function debug($message, $category = 'application')
{
if (YII_DEBUG) {
static::getLogger()->log($message, Logger::LEVEL_TRACE, $category);
}
}
プロファイリングのためのコードブロックの終了をマークします。
これは、同じカテゴリ名で以前にbeginProfile()を呼び出したことと対応付けられる必要があります。
beginProfile()も参照してください。
public static void endProfile ( $token, $category = 'application' ) | ||
$token | string |
コードブロックのトークン |
$category | string |
このログメッセージのカテゴリ |
public static function endProfile($token, $category = 'application')
{
static::getLogger()->log($token, Logger::LEVEL_PROFILE_END, $category);
}
エラーメッセージをログに記録します。
エラーメッセージは、通常、アプリケーションの実行中に回復不能なエラーが発生したときにログに記録されます。
public static void error ( $message, $category = 'application' ) | ||
$message | string|array |
ログに記録するメッセージ。単純な文字列または配列など、より複雑なデータ構造にすることができます。 |
$category | string |
メッセージのカテゴリ。 |
public static function error($message, $category = 'application')
{
static::getLogger()->log($message, Logger::LEVEL_ERROR, $category);
}
パスエイリアスを実際のパスに変換します。
変換は次の手順で行われます。
- 指定されたエイリアスが「@」で始まらない場合、変更せずに返されます。
- それ以外の場合は、指定されたエイリアスの先頭部分と一致する、登録されている最長のエイリアスを探します。存在する場合は、指定されたエイリアスの対応する部分を、登録されているパスで置き換えます。
$throwException
パラメータに応じて、例外をスローするか、falseを返します。
たとえば、デフォルトでは「@yii」はYiiフレームワークディレクトリ(例:「/path/to/yii」)へのエイリアスとして登録されています。エイリアス「@yii/web」は、「/path/to/yii/web」に変換されます。
「@foo」と「@foo/bar」の2つのエイリアスを登録した場合、「@foo/bar/config」を変換すると、「@foo」ではなく「@foo/bar」の部分が対応する登録済みパスで置き換えられます。これは、最長のエイリアスが優先されるためです。
ただし、変換するエイリアスが「@foo/barbar/config」の場合、「/」が境界文字として機能するため、「@foo」が「@foo/bar」の代わりに置き換えられます。
このメソッドは、返されたパスが存在するかどうかを確認しません。
詳細については、エイリアスに関するガイド記事を参照してください。
setAlias()も参照してください。
public static string|false getAlias ( $alias, $throwException = true ) | ||
$alias | string |
変換するエイリアス。 |
$throwException | boolean |
指定されたエイリアスが無効な場合に例外をスローするかどうか。これがfalseで、無効なエイリアスが指定された場合、このメソッドはfalseを返します。 |
戻り値 | string|false |
エイリアスに対応するパス。ルートエイリアスが事前に登録されていない場合はfalse。 |
---|---|---|
スロー | yii\base\InvalidArgumentException |
$throwExceptionがtrueの場合にエイリアスが無効な場合。 |
public static function getAlias($alias, $throwException = true)
{
if (strncmp((string)$alias, '@', 1) !== 0) {
// not an alias
return $alias;
}
$pos = strpos($alias, '/');
$root = $pos === false ? $alias : substr($alias, 0, $pos);
if (isset(static::$aliases[$root])) {
if (is_string(static::$aliases[$root])) {
return $pos === false ? static::$aliases[$root] : static::$aliases[$root] . substr($alias, $pos);
}
foreach (static::$aliases[$root] as $name => $path) {
if (strpos($alias . '/', $name . '/') === 0) {
return $path . substr($alias, strlen($name));
}
}
}
if ($throwException) {
throw new InvalidArgumentException("Invalid path alias: $alias");
}
return false;
}
public static yii\log\Logger getLogger ( ) | ||
戻り値 | yii\log\Logger |
メッセージロガー |
---|
public static function getLogger()
{
if (self::$_logger !== null) {
return self::$_logger;
}
return self::$_logger = static::createObject('yii\log\Logger');
}
オブジェクトのパブリックメンバ変数を返します。
このメソッドは、オブジェクトのパブリックなメンバ変数を取得するために提供されています。「get_object_vars()」とは異なり、オブジェクト内から呼び出された場合でも、プライベートおよびプロテクトされた変数は返しません。
public static array getObjectVars ( $object ) | ||
$object | object |
処理対象のオブジェクト |
戻り値 | array |
オブジェクトのパブリックなメンバ変数 |
---|
public static function getObjectVars($object)
{
return get_object_vars($object);
}
指定されたエイリアスのルートエイリアスパートを返します。
ルートエイリアスとは、以前にsetAlias() を介して登録されたエイリアスです。指定されたエイリアスが複数のルートエイリアスと一致する場合、最も長いものが返されます。
public static string|false getRootAlias ( $alias ) | ||
$alias | string |
エイリアス |
戻り値 | string|false |
ルートエイリアス、またはルートエイリアスが見つからない場合はfalse |
---|
public static function getRootAlias($alias)
{
$pos = strpos($alias, '/');
$root = $pos === false ? $alias : substr($alias, 0, $pos);
if (isset(static::$aliases[$root])) {
if (is_string(static::$aliases[$root])) {
return $root;
}
foreach (static::$aliases[$root] as $name => $path) {
if (strpos($alias . '/', $name . '/') === 0) {
return $name;
}
}
}
return false;
}
Yiiフレームワークの現在のバージョンを表す文字列を返します。
public static string getVersion ( ) | ||
戻り値 | string |
Yiiフレームワークのバージョン |
---|
public static function getVersion()
{
return '2.0.50-dev';
}
情報メッセージをログに記録します。
情報メッセージは、通常、アプリケーションによって重要な事柄(例:管理者のログイン)の記録のためにログに記録されます。
public static void info ( $message, $category = 'application' ) | ||
$message | string|array |
ログに記録するメッセージ。単純な文字列または配列など、より複雑なデータ構造にすることができます。 |
$category | string |
メッセージのカテゴリ。 |
public static function info($message, $category = 'application')
{
static::getLogger()->log($message, Logger::LEVEL_INFO, $category);
}
「Yii Framework を使用して構築」情報を表示する、Webページに表示できるHTMLハイパーリンクを返します。
public static string powered ( ) | ||
戻り値 | string |
「Powered by Yii Framework」情報を表示する、Webページに表示できるHTMLハイパーリンク |
---|
public static function powered()
{
return \Yii::t('yii', 'Powered by {yii}', [
'yii' => '<a href="https://yii.dokyumento.jp/" rel="external">' . \Yii::t('yii', 'Yii Framework') . '</a>',
]);
}
パスエイリアスを登録します。
パスエイリアスは、長いパス(ファイルパス、URLなど)を表す短い名前です。たとえば、「@yii」をYiiフレームワークディレクトリへのパスのエイリアスとして使用します。
パスエイリアスは「@」で始まる必要があります。これにより、エイリアスではないパスと容易に区別できます。
このメソッドは、指定されたパスが存在するかどうかを確認しません。単にエイリアスとパスを関連付けるだけです。
指定されたパスの末尾の「/」と「\」文字はトリムされます。
詳細については、エイリアスに関するガイド記事を参照してください。
getAlias()も参照してください。
public static void setAlias ( $alias, $path ) | ||
$alias | string |
エイリアス名(例:「@yii」)。「@」で始まる必要があります。getAlias()によるエイリアス変換を実行する際に境界文字として機能するスラッシュ「/」を含めることができます。 |
$path | string|null |
エイリアスに対応するパス。これがnullの場合、エイリアスは削除されます。「/」と「\」の末尾の文字はトリムされます。これは次のことができます。
|
スロー | yii\base\InvalidArgumentException |
$pathが不正なエイリアスの場合。 |
---|
public static function setAlias($alias, $path)
{
if (strncmp($alias, '@', 1)) {
$alias = '@' . $alias;
}
$pos = strpos($alias, '/');
$root = $pos === false ? $alias : substr($alias, 0, $pos);
if ($path !== null) {
$path = strncmp($path, '@', 1) ? rtrim($path, '\\/') : static::getAlias($path);
if (!isset(static::$aliases[$root])) {
if ($pos === false) {
static::$aliases[$root] = $path;
} else {
static::$aliases[$root] = [$alias => $path];
}
} elseif (is_string(static::$aliases[$root])) {
if ($pos === false) {
static::$aliases[$root] = $path;
} else {
static::$aliases[$root] = [
$alias => $path,
$root => static::$aliases[$root],
];
}
} else {
static::$aliases[$root][$alias] = $path;
krsort(static::$aliases[$root]);
}
} elseif (isset(static::$aliases[$root])) {
if (is_array(static::$aliases[$root])) {
unset(static::$aliases[$root][$alias]);
} elseif ($pos === false) {
unset(static::$aliases[$root]);
}
}
}
ロガーオブジェクトを設定します。
public static void setLogger ( $logger ) | ||
$logger | yii\log\Logger|null |
ロガーオブジェクト。 |
public static function setLogger($logger)
{
self::$_logger = $logger;
}
メッセージを指定された言語に翻訳します。
これはyii\i18n\I18N::translate()のショートカットメソッドです。
翻訳はメッセージカテゴリに従って行われ、ターゲット言語が使用されます。
翻訳メッセージにパラメータを追加できます。これは、翻訳後に対応する値で置換されます。この形式は、次の例に示すように、パラメータ名を波括弧で囲むことです。
$username = 'Alexander';
echo \Yii::t('app', 'Hello, {username}!', ['username' => $username]);
PHP intl拡張機能メッセージフォーマッタを使用して、メッセージパラメータのさらなるフォーマットがサポートされています。詳細はyii\i18n\I18N::translate()を参照してください。
public static string t ( $category, $message, $params = [], $language = null ) | ||
$category | string |
メッセージカテゴリ。 |
$message | string |
翻訳するメッセージ。 |
$params | array |
メッセージ内の対応するプレースホルダーを置換するために使用されるパラメータ。 |
$language | string|null |
言語コード(例:`en-US`、`en`)。これがnullの場合、現在のアプリケーション言語が使用されます。 |
戻り値 | string |
翻訳されたメッセージ。 |
---|
public static function t($category, $message, $params = [], $language = null)
{
if (static::$app !== null) {
return static::$app->getI18n()->translate($category, $message, $params, $language ?: static::$app->language);
}
$placeholders = [];
foreach ((array) $params as $name => $value) {
$placeholders['{' . $name . '}'] = $value;
}
return ($placeholders === []) ? $message : strtr($message, $placeholders);
}
debug()のエイリアス。
public static void trace ( $message, $category = 'application' ) | ||
$message | string|array |
ログに記録するメッセージ。単純な文字列または配列など、より複雑なデータ構造にすることができます。 |
$category | string |
メッセージのカテゴリ。 |
public static function trace($message, $category = 'application')
{
static::debug($message, $category);
}
警告メッセージをログに記録します。
警告メッセージは、通常、エラーが発生しても実行を継続できる場合にログに記録されます。
public static void warning ( $message, $category = 'application' ) | ||
$message | string|array |
ログに記録するメッセージ。単純な文字列または配列など、より複雑なデータ構造にすることができます。 |
$category | string |
メッセージのカテゴリ。 |
public static function warning($message, $category = 'application')
{
static::getLogger()->log($message, Logger::LEVEL_WARNING, $category);
}
サインアップ または ログイン してコメントしてください。