stoneyang

第 537 位会员

会员
个人信息
  • 加入于 2016-08-23 20:48:21
  • 最后登录时间 2年前
个人成就
  • 发表文章次数 10
  • 发布回复次数 3
  • 个人主页浏览次数 158
yii配置详解6年前

@qihuajun [#5楼](#comment5) 谢谢解释。附上源码位于yii\BaseYii.php文件中。

public static function createObject($type, array $params = [])
    {
        if (is_string($type)) {
            return static::$container->get($type, $params);
        } elseif (is_array($type) && isset($type['class'])) {
            $class = $type['class'];
            unset($type['class']);
            return static::$container->get($class, $params, $type);
        } elseif (is_callable($type, true)) {
            return static::$container->invoke($type, $params);
        } elseif (is_array($type)) {
            throw new InvalidConfigException('Object configuration must be an array containing a "class" element.');
        } else {
            throw new InvalidConfigException('Unsupported configuration type: ' . gettype($type));
        }
    }

通过该方法,去容器中寻找该对象。至于容器的促使化在yii/Yii.php文件中

class Yii extends \yii\BaseYii
{
}

spl_autoload_register(['Yii', 'autoload'], true, true);
Yii::$classMap = require(__DIR__ . '/classes.php');
Yii::$container = new yii\di\Container();

注册了自动加载函数(在BaseYii中),导入映射类文件(避免查找,提高性能),然后实例化容器类文件

Yii项目开发总结6年前

@forecho [[#2楼](#comment2)](#comment2) 谢谢指教,领域驱动设计现在正在关注。对于读写分离,有数据层方面的,有代码层方面的,详细的架构是CQRS。引用一段话

CQRS即Command Query Responsibility Seperation(命令查询职责分离),其设计思想来源于Mayer提出的CQS(Command Query Seperation)。这种命令与查询的分离方式,可以更好地控制请求者的操作。查询操作不会造成数据的修改,因而它属于一种幂等操作,可以反复地发起,而不用担心会对系统造成影响。基于这种特性,我们还可以为其提供缓存,从而改进查询的性能。命令操作则与之相反,它会直接影响系统信息的改变。查询操作与命令操作对事务的要求也不一样。由于查询操作不会改变系统状态,因而,不会产生最终的数据不一致。从请求响应的角度来看,查询操作常常需要同步请求,实时返回结果;命令操作则不然,因为我们并不期待命令操作必须返回结果,这就可以采用fire-and-forget方式,而这种方式正是运用异步操作的前提。此外,对于大多数软件系统而言,查询操作发起的频率通常要远远高于命令操作。如上种种,都是将命令与查询进行分离的根本原因。

Yii中AR是很方便,但是性能不高,直接用SQL查询,效率更高

yii2博客学习笔记(三)6年前

@echo #1楼 之所以没考虑user_id,因为这个文章只是简单的学习分享的,并不是很严谨完善的博客,就没建立用户系统,不过我相信,我写的这些都会的的话,自己添加user_id和其他功能也应该很容易的。

关于排版的问题,这是用为知写的,复制粘贴过来的,没有仔细检查,所以可能有点变化,后面会仔细检查的。