0 关注者

类 yii\base\BaseObject

继承关系yii\base\BaseObject
实现接口yii\base\Configurable
子类yii\base\Action, yii\base\ActionEvent, yii\base\ActionFilter, yii\base\Application, yii\base\Behavior, yii\base\Component, yii\base\Controller, yii\base\DynamicModel, yii\base\ErrorHandler, yii\base\Event, yii\base\InlineAction, yii\base\Model, yii\base\ModelEvent, yii\base\Module, yii\base\Object, yii\base\Request, yii\base\Response, yii\base\Security, yii\base\Theme, yii\base\View, yii\base\ViewEvent, yii\base\ViewRenderer, yii\base\Widget, yii\base\WidgetEvent, yii\behaviors\AttributeBehavior, yii\behaviors\AttributeTypecastBehavior, yii\behaviors\AttributesBehavior, yii\behaviors\BlameableBehavior, yii\behaviors\CacheableWidgetBehavior, yii\behaviors\OptimisticLockBehavior, yii\behaviors\SluggableBehavior, yii\behaviors\TimestampBehavior, yii\caching\ApcCache, yii\caching\ArrayCache, yii\caching\Cache, yii\caching\ChainedDependency, yii\caching\DbCache, yii\caching\DbDependency, yii\caching\DbQueryDependency, yii\caching\Dependency, yii\caching\DummyCache, yii\caching\ExpressionDependency, yii\caching\FileCache, yii\caching\FileDependency, yii\caching\MemCache, yii\caching\MemCacheServer, yii\caching\TagDependency, yii\caching\WinCache, yii\caching\XCache, yii\caching\ZendDataCache, yii\captcha\Captcha, yii\captcha\CaptchaAction, yii\captcha\CaptchaAsset, yii\captcha\CaptchaValidator, yii\console\Application, yii\console\Controller, yii\console\ErrorHandler, yii\console\Request, yii\console\Response, yii\console\controllers\AssetController, yii\console\controllers\BaseMigrateController, yii\console\controllers\CacheController, yii\console\controllers\FixtureController, yii\console\controllers\HelpController, yii\console\controllers\MessageController, yii\console\controllers\MigrateController, yii\console\controllers\ServeController, yii\console\widgets\Table, yii\data\ActiveDataFilter, yii\data\ActiveDataProvider, yii\data\ArrayDataProvider, yii\data\BaseDataProvider, yii\data\DataFilter, yii\data\Pagination, yii\data\Sort, yii\data\SqlDataProvider, yii\db\ActiveQuery, yii\db\ActiveRecord, yii\db\AfterSaveEvent, yii\db\BaseActiveRecord, yii\db\BatchQueryResult, yii\db\CheckConstraint, yii\db\ColumnSchema, yii\db\ColumnSchemaBuilder, yii\db\Command, yii\db\Connection, yii\db\Constraint, yii\db\DataReader, yii\db\DefaultValueConstraint, yii\db\Expression, yii\db\ForeignKeyConstraint, yii\db\IndexConstraint, yii\db\Migration, yii\db\Query, yii\db\QueryBuilder, yii\db\Schema, yii\db\SqlToken, yii\db\SqlTokenizer, yii\db\TableSchema, yii\db\Transaction, yii\db\cubrid\ColumnSchemaBuilder, yii\db\cubrid\QueryBuilder, yii\db\cubrid\Schema, yii\db\mssql\ColumnSchema, yii\db\mssql\ColumnSchemaBuilder, yii\db\mssql\QueryBuilder, yii\db\mssql\Schema, yii\db\mssql\TableSchema, yii\db\mysql\ColumnSchema, yii\db\mysql\ColumnSchemaBuilder, yii\db\mysql\QueryBuilder, yii\db\mysql\Schema, yii\db\oci\ColumnSchemaBuilder, yii\db\oci\Command, yii\db\oci\QueryBuilder, yii\db\oci\Schema, yii\db\pgsql\ColumnSchema, yii\db\pgsql\QueryBuilder, yii\db\pgsql\Schema, yii\db\sqlite\ColumnSchemaBuilder, yii\db\sqlite\Command, yii\db\sqlite\QueryBuilder, yii\db\sqlite\Schema, yii\db\sqlite\SqlTokenizer, yii\di\Container, yii\di\ServiceLocator, yii\filters\AccessControl, yii\filters\AccessRule, yii\filters\AjaxFilter, yii\filters\ContentNegotiator, yii\filters\Cors, yii\filters\HostControl, yii\filters\HttpCache, yii\filters\PageCache, yii\filters\RateLimiter, yii\filters\VerbFilter, yii\filters\auth\AuthMethod, yii\filters\auth\CompositeAuth, yii\filters\auth\HttpBasicAuth, yii\filters\auth\HttpBearerAuth, yii\filters\auth\HttpHeaderAuth, yii\filters\auth\QueryParamAuth, yii\grid\ActionColumn, yii\grid\CheckboxColumn, yii\grid\Column, yii\grid\DataColumn, yii\grid\GridView, yii\grid\GridViewAsset, yii\grid\RadioButtonColumn, yii\grid\SerialColumn, yii\i18n\DbMessageSource, yii\i18n\Formatter, yii\i18n\GettextFile, yii\i18n\GettextMessageSource, yii\i18n\GettextMoFile, yii\i18n\GettextPoFile, yii\i18n\I18N, yii\i18n\Locale, yii\i18n\MessageFormatter, yii\i18n\MessageSource, yii\i18n\MissingTranslationEvent, yii\i18n\PhpMessageSource, yii\log\DbTarget, yii\log\Dispatcher, yii\log\EmailTarget, yii\log\FileTarget, yii\log\Logger, yii\log\SyslogTarget, yii\log\Target, yii\mail\BaseMailer, yii\mail\BaseMessage, yii\mail\MailEvent, yii\mutex\DbMutex, yii\mutex\FileMutex, yii\mutex\Mutex, yii\mutex\MysqlMutex, yii\mutex\OracleMutex, yii\mutex\PgsqlMutex, yii\rbac\Assignment, yii\rbac\BaseManager, yii\rbac\DbManager, yii\rbac\Item, yii\rbac\Permission, yii\rbac\PhpManager, yii\rbac\Role, yii\rbac\Rule, yii\rest\Action, yii\rest\ActiveController, yii\rest\Controller, yii\rest\CreateAction, yii\rest\DeleteAction, yii\rest\IndexAction, yii\rest\OptionsAction, yii\rest\Serializer, yii\rest\UpdateAction, yii\rest\UrlRule, yii\rest\ViewAction, yii\test\ActiveFixture, yii\test\ArrayFixture, yii\test\BaseActiveFixture, yii\test\DbFixture, yii\test\Fixture, yii\test\InitDbFixture, yii\validators\BooleanValidator, yii\validators\CompareValidator, yii\validators\DateValidator, yii\validators\DefaultValueValidator, yii\validators\EachValidator, yii\validators\EmailValidator, yii\validators\ExistValidator, yii\validators\FileValidator, yii\validators\FilterValidator, yii\validators\ImageValidator, yii\validators\InlineValidator, yii\validators\IpValidator, yii\validators\NumberValidator, yii\validators\PunycodeAsset, yii\validators\RangeValidator, yii\validators\RegularExpressionValidator, yii\validators\RequiredValidator, yii\validators\SafeValidator, yii\validators\StringValidator, yii\validators\TrimValidator, yii\validators\UniqueValidator, yii\validators\UrlValidator, yii\validators\ValidationAsset, yii\validators\Validator, yii\web\Application, yii\web\AssetBundle, yii\web\AssetConverter, yii\web\AssetManager, yii\web\CacheSession, yii\web\CompositeUrlRule, yii\web\Controller, yii\web\Cookie, yii\web\CookieCollection, yii\web\DbSession, yii\web\ErrorAction, yii\web\ErrorHandler, yii\web\GroupUrlRule, yii\web\HeaderCollection, yii\web\HtmlResponseFormatter, yii\web\JqueryAsset, yii\web\JsExpression, yii\web\JsonResponseFormatter, yii\web\Link, yii\web\MultiFieldSession, yii\web\MultipartFormDataParser, yii\web\Request, yii\web\Response, yii\web\Session, yii\web\UploadedFile, yii\web\UrlManager, yii\web\UrlNormalizer, yii\web\UrlRule, yii\web\User, yii\web\UserEvent, yii\web\View, yii\web\ViewAction, yii\web\XmlResponseFormatter, yii\web\YiiAsset, yii\widgets\ActiveField, yii\widgets\ActiveForm, yii\widgets\ActiveFormAsset, yii\widgets\BaseListView, yii\widgets\Block, yii\widgets\Breadcrumbs, yii\widgets\ContentDecorator, yii\widgets\DetailView, yii\widgets\FragmentCache, yii\widgets\InputWidget, yii\widgets\LinkPager, yii\widgets\LinkSorter, yii\widgets\ListView, yii\widgets\MaskedInput, yii\widgets\MaskedInputAsset, yii\widgets\Menu, yii\widgets\Pjax, yii\widgets\PjaxAsset, yii\widgets\Spaceless
可用版本2.0.13
源代码 https://github.com/yiisoft/yii2/blob/master/framework/base/BaseObject.php

BaseObject 是实现属性特性的基类。

属性由 getter 方法(例如 getLabel)和/或 setter 方法(例如 setLabel)定义。例如,以下 getter 和 setter 方法定义了一个名为 label 的属性

private $_label;

public function getLabel()
{
    return $this->_label;
}

public function setLabel($value)
{
    $this->_label = $value;
}

属性名称不区分大小写

可以像访问对象的成员变量一样访问属性。读取或写入属性将导致调用相应的 getter 或 setter 方法。例如,

// equivalent to $label = $object->getLabel();
$label = $object->label;
// equivalent to $object->setLabel('abc');
$object->label = 'abc';

如果属性只有 getter 方法而没有 setter 方法,则认为它是只读的。在这种情况下,尝试修改属性值将导致异常。

可以使用 hasProperty()canGetProperty() 和/或 canSetProperty() 来检查属性是否存在。

除了属性特性外,BaseObject 还引入了重要的对象初始化生命周期。特别是,创建 BaseObject 或其派生类的新的实例将依次涉及以下生命周期

  1. 调用类构造函数;
  2. 根据给定的配置初始化对象属性;
  3. 调用 init() 方法。

在上述中,步骤 2 和 3 都发生在类构造函数的末尾。建议您在 init() 方法中执行对象初始化,因为在此阶段,对象配置已应用。

为了确保上述生命周期,如果 BaseObject 的子类需要覆盖构造函数,则应像以下方式进行

public function __construct($param1, $param2, ..., $config = [])
{
    ...
    parent::__construct($config);
}

也就是说,$config 参数(默认为 [])应声明为构造函数的最后一个参数,并且应在构造函数的末尾调用父类的实现。

公共方法

隐藏继承的方法

方法 描述 定义于
__call() 调用不是类方法的命名方法。 yii\base\BaseObject
__construct() 构造函数。 yii\base\BaseObject
__get() 返回对象属性的值。 yii\base\BaseObject
__isset() 检查属性是否已设置,即已定义且不为 null。 yii\base\BaseObject
__set() 设置对象属性的值。 yii\base\BaseObject
__unset() 将对象属性设置为 null。 yii\base\BaseObject
canGetProperty() 返回一个值,指示属性是否可以读取。 yii\base\BaseObject
canSetProperty() 返回一个值,指示属性是否可以设置。 yii\base\BaseObject
className() 返回此类的完全限定名称。 yii\base\BaseObject
hasMethod() 返回一个值,指示方法是否已定义。 yii\base\BaseObject
hasProperty() 返回一个值,指示属性是否已定义。 yii\base\BaseObject
init() 初始化对象。 yii\base\BaseObject

方法详情

隐藏继承的方法

__call() 公共方法

调用不是类方法的命名方法。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当调用未知方法时将隐式调用。

public mixed __call ( $name, $params )
$name string

方法名

$params array

方法参数

返回值 mixed

方法返回值

抛出异常 yii\base\UnknownMethodException

调用未知方法时

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__construct() 公共方法

构造函数。

默认实现执行两件事

  • 使用给定的配置 $config 初始化对象。
  • 调用 init()

如果此方法在子类中被覆盖,建议

  • 构造函数的最后一个参数是一个配置数组,如这里的 $config
  • 在构造函数的末尾调用父类的实现。
public void __construct ( $config = [] )
$config array

将用于初始化对象属性的名称-值对

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() 公共方法

返回对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 $value = $object->property; 时将隐式调用。

另请参阅 __set()

public mixed __get ( $name )
$name string

属性名

返回值 mixed

属性值

抛出异常 yii\base\UnknownPropertyException

如果属性未定义

抛出异常 yii\base\InvalidCallException

如果属性是只写属性

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter();
    } elseif (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() 公共方法

检查属性是否已设置,即已定义且不为 null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,当执行 isset($object->property) 时将隐式调用。

请注意,如果属性未定义,则将返回 false。

另请参阅 https://php.ac.cn/manual/en/function.isset.php

public 布尔型 __isset ( $name )
$name string

属性名称或事件名称

返回值 布尔型

命名属性是否已设置(非 null)。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() 公共方法

设置对象属性的值。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 $object->property = $value; 时将隐式调用。

另请参阅 __get()

public void __set ( $name, $value )
$name string

属性名称或事件名称

$value mixed

属性值

抛出异常 yii\base\UnknownPropertyException

如果属性未定义

抛出异常 yii\base\InvalidCallException

如果属性为只读

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() 公共方法

将对象属性设置为 null。

不要直接调用此方法,因为它是一个 PHP 魔术方法,在执行 unset($object->property) 时将隐式调用。

请注意,如果属性未定义,则此方法将不执行任何操作。如果属性为只读,则会抛出异常。

另请参阅 https://php.ac.cn/manual/en/function.unset.php

public void __unset ( $name )
$name string

属性名

抛出异常 yii\base\InvalidCallException

如果属性为只读。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() 公共方法

返回一个值,指示属性是否可以读取。

如果属性可读,则

  • 该类具有与指定名称关联的 getter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);

另请参阅 canSetProperty()

public 布尔型 canGetProperty ( $name, $checkVars true )
$name string

属性名

$checkVars 布尔型

是否将成员变量视为属性

返回值 布尔型

属性是否可读

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() 公共方法

返回一个值,指示属性是否可以设置。

如果属性可写,则

  • 该类具有与指定名称关联的 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);

另请参阅 canGetProperty()

public 布尔型 canSetProperty ( $name, $checkVars true )
$name string

属性名

$checkVars 布尔型

是否将成员变量视为属性

返回值 布尔型

属性是否可写

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

            
className() 公共静态方法
自 2.0.14 版起已弃用。在 PHP >=5.5 上,请改用 ::class

返回此类的完全限定名称。

public static 字符串 className ( )
返回值 string

此类的完全限定名称。

                public static function className()
{
    return get_called_class();
}

            
hasMethod() 公共方法

返回一个值,指示方法是否已定义。

默认实现是调用 php 函数 method_exists()。当您实现 php 魔术方法 __call() 时,您可以重写此方法。

public 布尔型 hasMethod ( $name )
$name string

方法名

返回值 布尔型

方法是否已定义

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() 公共方法

返回一个值,指示属性是否已定义。

如果属性已定义,则

  • 该类具有与指定名称关联的 getter 或 setter 方法(在这种情况下,属性名称不区分大小写);
  • 该类具有与指定名称相同的成员变量(当 $checkVars 为 true 时);

另请参阅

public 布尔型 hasProperty ( $name, $checkVars true )
$name string

属性名

$checkVars 布尔型

是否将成员变量视为属性

返回值 布尔型

属性是否已定义

                public function hasProperty($name, $checkVars = true)
{
    return $this->canGetProperty($name, $checkVars) || $this->canSetProperty($name, false);
}

            
init() 公共方法

初始化对象。

此方法在构造函数结束时调用,在对象使用给定配置初始化之后。

public void init ( )

                public function init()
{
}