核心概念

  1. Object基类,构造函数()初始化属性
  2. Behavior行为, 一般注册Component的事件,公用方法及属性供Component调用
  3. Component组件, 事件管理(on, off, trigger, attach绑定事件 )、动态属性管理(__get)、动态方法管理(__call)
  4. ServiceLocator容器, 现在框架标配
  5. Module模块,有自己的controller, view, widget或静态资源
  6. Application应用(web, console), 继承模块, 引导扩展、组件; handle请求,并响应结果(MVC执行流程)
  7. Yii全局对象, 大量常用的静态方法(自动加载函数、t函数、设置属性函数、日志函数), 静态属性($app, 容器,别名,类名映射)
  8. ActionFilter过滤器, 在执行action之前进行某种操作, 监听Controller::EVENT_BEFORE_ACTION事件, 设置only属性数组,可只对某些action起作用 @see ActionFilter::isActive()
  9. Authentication 身份认证,@see Yii\web\User, IdentityInterface
  10. Authorization 授权,  @see yii\filters\AccessControl, AccessRule

MVC的运行

根据id找到模块或设置ctrl路径的Controller对象,
运行Ctrl->runAction() 方法
-a)执行berforAction(),  包括模块及自身的
-b)执行$action->runWithParams(), 执行action::berforeRun(), run(), afterRtun()
-c)执行afterAction(), 包括自身及模块的

执行流程拦截点@see ActionFilter
-1) (module, ctrl)::berforeAction()返回false
-2) (module, ctrl)::EVENT_BEFORE_ACTION, 事件监听
-3) action->beforeRun() 返回 false

过滤结果拦截点:
-1> (module, ctrl)::afterAction()
-2> (module, ctrl)::EVENT_AFTER_ACTION, 事件监听

改变默认执行流程:
-1)改变action, 设置ctrl->actions(), 映射新的Action类, @see ctrl::createAction(id)
-2)  改变ctrl加载,设置app|module的controllerMap属性,@see Module::createController

视图路径的渲染:
-1) layout路径的查询, 优先 module->layoutPath, 后app->layoutPath, @see ctrl::findLayoutFile()
-2) 视图的路径查询, @see View::findViewFile()
a. @path别名路径;
b. //path App::getViewPath();
c. /path Module::getViewPath();
d. ViewContextInterface, 如widget, ViewContextInterface::getViewPath()
e. $this->getViewFile(),  最后的防线

静态资源的发布:
a. View运行AssetBundle::register($view) ,
b. 调用View::getAssetManager()->getBundle($name), 得到AssetBundle
c. 运行 AssetBundle->publish($am) 进行发布到网站根目录并设置 css, js属性
d. 在视图文件设置点,一般是layout文件, 如View::head(), begeinBody(), endBody()
e. 在View::endBody() 中调用AssetBundle::registerAssetFiles($view) 获取之前设置发布后的js, css

参考:http://www.yiiframework.com/doc-2.0/index.html

VCL语法及变量
https://www.varnish-cache.org/docs/4.1/reference/vcl.html

Http header的作用
https://www.varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html

VSL查询匹配(Log)
https://www.varnish-cache.org/docs/4.0/reference/vsl-query.html
VSL tags
https://www.varnish-cache.org/docs/4.0/reference/vsl.html

管理
https://www.varnish-cache.org/docs/4.1/users-guide/run_cli.html
https://www.varnish-cache.org/docs/4.1/reference/varnish-cli.html#varnish-cli-7
https://www.varnish-cache.org/docs/4.1/reference/varnishadm.html

刷新缓存
ban req.url ~ gc
https://www.varnish-cache.org/trac/wiki/VCLExampleEnableForceRefresh

发现线上squid版本太早,准备升级,配置有很大的改变
参考官方配置文档
http://www.squid-cache.org/Doc/config/

反向代理的配置官方示例
http://wiki.squid-cache.org/ConfigExamples#Reverse_Proxy_.28Acceleration.29

了解几个核心配置选项:
http_port, cache_peer, cache_dir, acl, http_access, visible_hostname, cache_mem
squid配置项很多,也比较复杂,如果只是做个简单反向代理简单配置几项即可工作

 

排行
https://packagist.org/explore/popular

router [mvc]
https://github.com/nikic/FastRoute

monolog [log]
https://github.com/Seldaek/monolog

doctrine2 [orm]
https://github.com/doctrine/doctrine2

symfony/finder [filesystem]
https://github.com/symfony/finder

 

php开源的调试工具
new Debugbar -> addCollector  => Collector 收集数据 => render(js)

  • 数据收集(集合) DataCollector
  • 显示格式化工具 DataFormatter
  • 调试数据存储 Storage
  • js渲染工具 Resources(widget, debugbar)

扩展:
创建 Collector 继承 DataCollector, 根据需要创建 Resources/widgets/<name>

github: https://github.com/maximebf/php-debugbar
document: http://phpdebugbar.com/docs/

 

参考 http://php.net/manual/en/refs.calendar.php

https://github.com/fguillot/kanboard

PHP之依赖注入容器pimple
https://github.com/silexphp/Pimple
SplObjectStorage类

SimpleLogger
Syslog and Text files
https://github.com/fguillot/simpleLogger

SimpleValidator
https://github.com/fguillot/SimpleValidator

iCal iCalendars
https://github.com/markuspoerschke/iCal

Base32
https://github.com/NTICompass/PHP-Base32