クラス Yii
継承 | Yii » yii\BaseYii |
---|---|
利用可能なバージョン | 2.0 |
ソースコード | https://github.com/yiisoft/yii2/blob/master/framework/Yii.php |
Yiiは、共通のフレームワーク機能を提供するヘルパークラスです。
これはyii\BaseYiiを拡張しており、実際の処理を提供します。yii\BaseYii独自のYiiクラスを作成することで、いくつかの機能をカスタマイズできます。
公開プロパティ
プロパティ | 型 | 説明 | 定義元 |
---|---|---|---|
$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 |
メソッドの詳細
クラスの自動読み込みローダー。
このメソッドは、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?");
}
}
定義元: yii\BaseYii::beginProfile()
プロファイリングのためのコードブロックの開始をマークします。
これは、同じカテゴリ名で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;
}
定義場所: yii\BaseYii::createObject()
与えられた設定を使用して新しいオブジェクトを作成します。
このメソッドは、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.');
}
定義場所: yii\BaseYii::debug()
デバッグメッセージをログに記録します。
トレースメッセージは、主に開発目的で、コードの実行ワークフローを確認するためにログに記録されます。このメソッドは、アプリケーションがデバッグモードの場合にのみメッセージをログに記録します。
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);
}
}
定義場所: yii\BaseYii::endProfile()
プロファイリングのためのコードブロックの終了をマークします。
これは、同じカテゴリ名で以前呼び出された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);
}
定義場所: yii\BaseYii::getAlias()
パスエイリアスを実際のパスに変換します。
変換は、以下の手順で行われます。
- 指定されたエイリアスが'@'で始まらない場合、変更せずに返されます。
- それ以外の場合は、指定されたエイリアスの先頭部分に一致する、登録されている最も長いエイリアスを探します。存在する場合は、指定されたエイリアスの対応する部分を、登録された対応するパスに置き換えます。
$throwException
パラメータに応じて、例外をスローするか、falseを返します。
たとえば、デフォルトでは'@yii'はYiiフレームワークディレクトリ(たとえば'/path/to/yii')へのエイリアスとして登録されています。エイリアス'@yii/web'は、'/path/to/yii/web'に変換されます。
2つのエイリアス'@foo'と'@foo/bar'を登録した場合、'@foo/bar/config'の変換では、'@foo'ではなく'@foo/bar'の部分が対応する登録されたパスに置き換えられます。これは、最も長いエイリアスが優先されるためです。
ただし、変換するエイリアスが'@foo/barbar/config'の場合、'/'は境界文字として機能するため、'@foo/bar'ではなく'@foo'が置き換えられます。
注記: このメソッドは、返されたパスが存在するかどうかをチェックしません。
詳細については、エイリアスに関するガイド記事を参照してください。
こちらも参照してください 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;
}
定義場所: yii\BaseYii::getLogger()
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');
}
定義場所: yii\BaseYii::getObjectVars()
オブジェクトの公開メンバ変数を返します。
このメソッドは、オブジェクトのパブリックメンバ変数を取得できるように提供されています。"get_object_vars()"とは異なり、後者はオブジェクト自体内で呼び出された場合、プライベート変数とプロテクト変数を返します。
public static array getObjectVars ( $object ) | ||
$object | object |
処理するオブジェクト |
戻り値 | array |
オブジェクトのパブリックメンバ変数 |
---|
public static function getObjectVars($object)
{
return get_object_vars($object);
}
定義場所: yii\BaseYii::getRootAlias()
指定されたエイリアスのルートエイリアスパートを返します。
ルートエイリアスとは、以前に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\BaseYii::getVersion()
Yiiフレームワークの現在のバージョンを表す文字列を返します。
public static string getVersion ( ) | ||
戻り値 | string |
Yiiフレームワークのバージョン |
---|
public static function getVersion()
{
return '2.0.50-dev';
}
定義されている場所: yii\BaseYii::info()
情報メッセージをログに記録します。
情報メッセージは、通常、アプリケーションによって重要な事柄(例:管理者のログイン)を記録するためにログに記録されます。
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\BaseYii::powered()
「Yii Frameworkで動作しています」情報を表示するWebページに表示できるHTMLハイパーリンクを返します。
public static string powered ( ) | ||
戻り値 | string |
Webページに表示できる「Powered by Yii Framework」情報を表示する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>',
]);
}
定義されている場所: yii\BaseYii::setAlias()
パスエイリアスを登録します。
パスエイリアスは、長いパス(ファイルパス、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]);
}
}
}
定義されている場所: yii\BaseYii::setLogger()
ロガーオブジェクトを設定します。
public static void setLogger ( $logger ) | ||
$logger | yii\log\Logger|null |
ロガーオブジェクト。 |
public static function setLogger($logger)
{
self::$_logger = $logger;
}
定義されている場所: yii\BaseYii::t()
メッセージを指定された言語に翻訳します。
これは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);
}
定義されている場所: yii\BaseYii::trace()
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);
}
コメントするにはサインアップまたはログインしてください。