首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

yii2开发中19条推荐实践

bug,这需要你在一个yii2生命周期内持续的观察某些变量的值及赋值路径,具体配置可以参考我之前的课程, 用xdebug支持yii2调试之 - PhpStorm配置篇 当然,yii2自己的debug扩展也极其有用...开发中 本段为你介绍我在yii2开发中一些习惯和小技巧,希望对你有用。...模型的重要性 很多yii2的初学者喜欢将大量逻辑写到控制器的动作(action)中,这是不对的,我们的重点应该在模型中,而控制器仅仅是做输入输出。 我们拿关联举个例子,下面的这段代码是不好的。...为视图的PHP代码增加一个try 在写action或模型方法的时候,为了保证代码的稳定性,我们一般都会用try....catch语法结构,但是在yii2的视图内很少有人用,记住,也要用!...当然从理念上说也有点不同 行为 一些类附加的属性 父类 一些类共同的属性 我的用法(不一定就是对的),尤其在模块中我喜欢为控制器增加一层父类。

3.3K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用发展的眼光追技术

    ,API 序列化模型这几个。...我们返回头再整体回顾下 YII2 框架,你会发现在 YII2 官方的默认模版中,View 层还是占有很大的比重。...在 YII2 社区中安装 YII2 版本的讨论中,经常有一个 View asset 扩展安装的难题,核心就是前端页面元素与后端服务的耦合的问题,以及版本依赖的冲突。...总结 看看程序语言的发展脉络,以及前后端发展的变革,可以总结出两个词:演变和趋势。在应用程序开发中,前端这个职位是从后端细化和演变而来的,前后端分离和独立就是技术的趋势。...本来想写一篇关于重新定位 YII2 的文章,最后发现本文的重点其实不是 YII2 ,而是这种变化趋势对于相关决策的度量参考。 唯有改变思路,才有出路,用发展的眼光去追技术。

    1.4K20

    Yii2的MVC新特性

    这篇文章主要来看看在Yii2之中的MVC,当然,最核心的思想还是跟Yii1.1一样的,但是我今天是想来看看在Yii2里的MVC跟Yii1.1有什么不同,或者应该直接说,Yii2的改进在哪里,以至于使得官方敢向着最好的...废话就不多说了,下面来看看分别M-V-C这三个部分: 模型(Model): Yii之中的Models都继承与yii\base\Model,通常是用来存储数据并对这些数据设置一些特定的验证规则(rules...在Views还有一个值得注意的地方就是this变量,在Yii1.1中,this可以说就是链接Controller和Views的中介;而在Yii2中, 控制器(Controllers) 首先直接来看一下代码...不过,你在Yii2的Controller中只需认识这些新特性基本就足矣,因为一些更基本的东西跟Yii1.1是一样的,完全不用怕,(我是说如果你上手过Yii1.1的话)。...写在最后 正如你在这篇文章看到的一样,在Yii2中几乎所有的MVC组件变化都使得Yii2更好用了,我相信这会带给开发者更好的的开发体验,毕竟Yii2 中看到了一丝丝优雅的样子!

    2.7K20

    系统化服务构建-软件工程分层

    图1-go项目文件.png 图 1 是《极客时间》一个微课程中的一张 Go 项目工程图,印证了我这些年开发设计中对于工程创建的一些理念想法,叙述如下。...业务领域模型 首先 Model 是一个业务领域概念,对应的业务模型,而非数据库字段或者说数据库字段的映射。这一点在 PHP 中被误解的尤其明显,大家都以为模型就是数据库的表映射。...为什么在 PHP 从业者眼中 Model 就代表着数据表,说白了就是 PHP 的项目业务简单到不足以启用领域模型相关的设计,进而我们可以思考 PHP 数据结构中惯用数组而非属性也是同样的道理。...DAO 与 Model 并不存在严格的对应关系。 DAO 主要与数据库存储交互,不参与业务逻辑。对外暴露的接口数据不仅仅是数据库字段的单纯映射,业务领域应该是用 Model 表示。...我们以 YII2 工程为例,官方推荐的 Advanced 模版中有一个公共工程 common 那我们是不是应该把项目中可以共用的数据层都放到 common 里? ?

    62210

    从配置文件的角度去了解Yii2

    在common级别中,设置的是站点的root.在site中设置的是module的root. 1. config/main.php main里面有比较多的设置项. 0....'modules' 对应的modules(例如backend)目录下的Module对象的命名空间.方便Yii2进入你所定义的module. module在Yii2中是一组MVC的封装,这个概念可能在其他框架中不同...在Yii2中会对部分component内置好'class'字段的配置,也就是说,作为开发人员,你不需要知道这个component对应的对象在哪里,直接配置后使用就可以了.当然如果自己写的话必须指定component...Yii2的DI和对象模型,后续文章详细介绍.文章在这里 7....这个有点特殊,但是非常好用,你可以为Application(注意,其他事件,例如MVC,由于实例不同,这里的绑定对其无效)的默认事件绑定callable,让其在对应的时期触发.Yii2的事件管理会单独开文说明

    1.5K21

    为什么要推荐使用现代化PHP框架?

    那在PHP生态中传统的LA(N)MP能满足微服务框架的需求吗? 答案显然是不能的。...我们是不是应该切换开发语言?...不幸的是目前PHP生态中还没有一个工程级别的MVC框架能够满足我们的需求。 综上所述,我们需要使用全新的现代化的PHP框架Webman,为微服务架构打下坚实的基础。...PHP-FPM工作模式的问题 Nginx基于epoll事件模型,一个worker同时可处理多个请求 fpm-worker在同一时刻可处理一个请求 master进程只负责处理worker进程的监控、日志等...核8G内存服务器实质可利用16个进程) 压测数据对比 目标 对比在相同硬件条件下,PHP Yii2框架在PHP-5.6及PHP7下echo hello world的QPS,并观察平均响应时间及CPU。

    10310

    Yii2 进阶篇

    )中的代码会在操作执行之后执行 如:创建一个过滤器,记录操作执行的时间 首先应该创建一个过滤器,比如在frontend 应用中创建一个 filters目录,专门用来存储过滤器,然后创建TimeFilter.php...文件过滤器通常使用Filter.php作为文件后缀,而文件中应该有一个和文件名一样的类 ?...创建模型.png 创建控制器,实例化表单模型和渲染视图 ? 创建控制器.png 视图中使用ActiveForm创建表单元素 ? 创建元素表单.png 在控制器中接收表单数据并绑定数据到表单模型 ?...表单模型.png 注意:要调用上传功能,需要打开 php_fileinfo 扩展 uploads目录应该在入口文件同级目录 多文件上传 Yii2支持多文件上传,只需要在上面的例子中加入一些小的修改即可...,在Yii2中,不需要自己去写验证,直接在表单模型的 rules 中调用 captcha 验证就可以了 ['verifyCode','captcha'], 数据分页 Yii2也提供了类似于TP的数据分页类

    2K31

    从配置文件的角度去了解Yii2

    在common级别中,设置的是站点的root.在site中设置的是module的root. 1. config/main.php main里面有比较多的设置项. 0....'modules' 对应的modules(例如backend)目录下的Module对象的命名空间.方便Yii2进入你所定义的module. module在Yii2中是一组MVC的封装,这个概念可能在其他框架中不同...在Yii2中会对部分component内置好'class'字段的配置,也就是说,作为开发人员,你不需要知道这个component对应的对象在哪里,直接配置后使用就可以了.当然如果自己写的话必须指定component...Yii2的DI和对象模型,后续文章详细介绍.文章在这里 7....这个有点特殊,但是非常好用,你可以为Application(注意,其他事件,例如MVC,由于实例不同,这里的绑定对其无效)的默认事件绑定callable,让其在对应的时期触发.Yii2的事件管理会单独开文说明

    97031

    Yii2 起步 之创建项目

    yii2目前还处于beta版本,相关文档也一直在变化,如有疏漏,还请及时反馈 Yii2安装 两种安装方式,composer或者下载zip包 使用composer安装初始化yii2项目(推荐)...windows下,如果本机还没有安装composer,我的做法是是直接下载composer.phar包 假定你的工作目录是 workspace,将下载的composer.phar放在workspace...yiisoft/yii2-app-basic basic 其中 命令最后的basic可以替换任意你想设定的应用名称,比如app,myapp等等 关于composer的安装使用请查阅相关资料 composer...官方地址 源码安装 源码包地址 yii2-beta 下载源码包解压后即yii2的框架源文件,然后根据自己的实际情况构建目录结构,进行开发 项目初始化完成以后,配置yii2的配置文件,配置文件一般放在...app/config目录下,当然这个路径会根据个人习惯而不同] 我个人推荐的yii2框架目录结构(使用composer 创建项目的默认目录结构和此不同) composer.json 定义项目中的

    96120

    豁然开朗:这问题我不信你能分析的这么透彻!

    “这样吧,小菜拿上笔和本,现在会议室没人使用,我单独给你讲讲”。 “好的”,小菜边说,边回到工位拿笔和本子,老王则拿起了自己的电脑,二人一起到会议室走去。...三、CPU内存模型 “以前了解过CPU内存模型吗?”。 “在学校听老师讲过,不过讲的不够深入和具体,我也了解的不多,我确实也想不出来这跟昨天实现的功能有啥关系”。...“你在大学里应该学到过,其实CPU的执行速度是非常快的,会比内存的读写速度快的多”,老王画完图说道。 “是的,这个我了解过”,小菜回应道。...“Java内存模型规定了所有的变量都存储在主内存中,也就是存储在计算机的物理内存中,每个线程都有自己的工作内存,用于存储线程私有的数据,线程对变量的所有操作都需要在工作内存中完成。...最后,简单叙述了如何解决相关的问题。 最后,可以在评论区写下你学完本章节的收获,祝大家都能学有所成,我们一起搞定高并发设计模式。 好了,愿大家都能有所收获,我是冰河,我们下期见~~

    16830

    Yii2中的应用级布局

    首先我们介绍一下Controller类的render()方法的执行流程,需要查看vendor\yiisoft\yii2\base\Contorller.php文件中的render()方法源代码。...开始应用级布局 在一个应用中多个控制器使用一个布局文件,那么可以在应用级配置文件config/web.php中设置yii/base/Application的$layout属性,代码如下: $config...> 嵌套布局实现页面渲染流程: 首先渲染视图文件article.php的内容,存储到布局文件reght.php的$content中。...因为在布局文件right.php 中使用了另外一个布局文件headerfooter.php,所以又把article.php和right.php两个文件的内容存储到headerfooter.php文件的$...,在Module类中定义了getViewPath()和setViewPath()方法,来获取和设置视图文件路径,代码如下所示: //所在文件路径vendor\yiisoft\yii2\base\Application.php

    1.2K20

    yii2反序列化后续

    ,原来是php版本问题,PREG_UNMATCHED_AS_NULL这个静态变量只在php7.2以上才有,而我用的是php7.1,所以升级一下,然后测试,结果 又报错了...如下 ?...我去查了一下,这个应该是yii的视图报错了导致无法回显命令执行的结果,所以,我利用dnslog来验证命令是否执行,如下: ? 可以看到命令成功执行了 poc1: yii2真是一个练习反序列化连挖掘的好靶场,我们可以通过它来练习各种魔术方法在反序列化链构造中的使用 php所有的魔术方法如下: __construct(),类的构造函数 __destruct()...,类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用...__invoke进行利用吗,但是后来发现我天真了,这报错给我安排的明明白白 ?

    1.1K30

    这周撸了两款小程序,总结下经验。

    当服务器端进行了存储后要生成一个key,将其返给小程序,以后小程序凡是发起需要用户认证的请求,都带这个key用来判断用户身份,在yii2中,这个key就是我们restful中的access_token。...客服消息 在小程序开发中,客服消息的重要性不言而喻,它除了作为客服服务外,还作为小程序到微信浏览器的一个渠道,比如本次在「宝宝爱识图」的开发中,我用它来实现将收款微信号到用户的推送工作,这主要是解决在ios...服务器端 接下来总结下服务器端,我使用yii2的restful组件作为接口支持,关于restful的基本功能请参考yii2官方文档或我之前录制的课程《Yii2的RESTful讲解》,在这里分享我认为关键的点...让yii2能解析json的请求内容 默认情况下yii2并不能识别请求中的json格式,而我们小程序在发起请求时喜欢用它,因此我们要对yii2进行一下配置。...在yii2的restful中的用户认证使用了行为机制,我们来看下流程代码 // 在需要授权的控制器内 class CardController extends ActiveController {

    1.4K50

    yii2的加密解密那些事儿

    大家好,又见面了,我是你们的朋友全栈君。 我们做程序的时候,加密解密是绕不开的话题,使用yii2开发应用的时候,都内置了哪些有关加密解密(安全)方便的支持那?本文将为你揭晓。...相关环境 操作系统及IDE macOS 10.13.1 & PhpStorm2018.1.2 软件版本 PHP7.1.8 Yii2.0.14 在yii2中,管理加密解密的库叫做Security,它以yii2...Security组件源代码位置如下 vendor/yiisoft/yii2/base/Security.php Security组件一共有15个与加密解密(&编码)相关的公共方法,我们先来列一个清单。...一般用法如下 // 使用generatePasswordHash为用户的密码加密,$hash存储到库中 $hash = Yii::$app->getSecurity()->generatePasswordHash...validateData 函数的第三个参数应该与使用 hashData() 生成数据时的值相同. 它指示数据中的散列值是否是二进制格式. 如果为false, 则表示散列值仅由小写十六进制数字组成.

    91820

    yii2开发后记

    yii的默认方法是index,可以在vender/yiisoft/yii2/base/Controller.php 中进行初始设置,也可以在控制器中改写defaltAction='action'。...3.模型操作表设置 yii的模型有Model和ActiveRecord两种,Model类用来处理基本的业务逻辑,没有数据库相关方法,如果要操作同名数据表,请继承ActiveRecord类。...5.布局模式 yii会默认开启布局模式,其布局模板为view中的layout中的main.php,我们可以在veder/yiisoft/yii2/web/controller.php基础类中public...2.初始化变量 想在控制器中每一个操作前,初始化一个变量的话不要重写__construct构造函数,因为它需要传入各种变量。...3.在JS中使用YII的变量 若想在JS中使用YII的URL变量等,可以使用html中的script标签,将变量在第一次渲染视图时预先解析出来,将下面代码放在需要使用变量的地方之前。

    3.2K50

    Yii2 Call to a member function validateCsrfToken() on string

    大家好,又见面了,我是全栈君。 Do you have an init(); in your SiteController?...If so you need to call parent::init(); 错误已经定位,这个是yii2更新导致的问题:https://github.com/yiisoft/yii2/blob/master.../framework/base/Controller.php#L105 yii2加入类变量 request , 在init函数中初始化,因此如果重写controller的init方法,必须执行 parent...:init(); , 否则就会出这个报错,而fecmall的有一些controller重新init方法,但是没有执行 parent:init;导致的controller 中的this->request没有初始化导致的问题...参考:http://www.fecmall.com/topic/4317 https://github.com/yiisoft/yii2/issues/18154 发布者:全栈程序员栈长,转载请注明出处

    1.1K20

    YII2通过composer优化vendor

    本文讨论通过composer工具安装Yii2框架并优化Vendor过程中遇到的问题,约定读者对composer基本原理有一定了解,并且有安装Yii2框架的实际经验。...框架安装问题 在Yii2社区里经常会遇到一类问题,那就是 安装完官方推荐的版本后 1 为什么没有vendor文件夹?...在Yii2 中,vendor是composer下载的依赖库文件,官方的项目模板代码里只有其自己的项目文件,而其依赖的yii框架等类库,都记录在composer.json里面,只要安装好composer,...2 自己安装的Yii2的项目中,vendor中的包在composer.json 中找不到对应,而这些包大多是暂时不需要用到的,该如何remove,保持vendor最小化?...在工程的主配置文件main.php下有关于vendor的配置入口,VendorPath具体值,要结合配置文件的路径,请参照下面的两幅图以及相关的路径配置 第一幅 ?

    1.5K40

    yii2使用Migrations为整个数据库表创建迁移

    大家都知道Migrations是一个在开发和维护数据库驱动的应用过程中,数据库的结构与源代码的开发同步更新。...例如,在应用开发的过程中,新建了一张表,在应用部署到生产环境后,发现需要为这张表创建一个索引以提升查询性能,等等。...例如,在mysql类型中是:smallint 但我在Migrations中必须是 smallinteger 包括 bigint 也要改为 biginteger,目前我就发现这两个不一样,其他的暂时还没遇到...$value, $info); } } } 我们先实例化模型文件,然后获取到存放迁移文件的路径,先将迁移路径下的所有迁移文件删除掉(避免重复),然后我们就使用:Yii::$app...到了最后紧张又刺激的时刻了,我们的工作已经完成,就差运行命令调试。 我们先将所有表备份一份并导出到本地(以防万一,我不舍得你们跑路啊),确保所有表都在的时候,我们就是用命令执行console任务。

    1.9K31
    领券