最近在学数据结构课,老师用C#来教学,这里分享一本非常好的资料
在laracasts的14期视频中,作者讲述了在Laravel中如何使用默认的Auth控制器来快速构造用户验证的功能。
其中我发现,这个Auth控制器默认情况,并不会在登录时检测用户输入的用户名是否为邮箱(默认登录字段为邮箱)
这导致用户输入其他字段的时候也会进入到数据库进行查询。
下面是一个在不修改原有vendor下AuthenticatesUsers的方式(低耦合)来实现检查登录字段是否为邮件功能
在AuthController.php,找到下面的代码
use AuthenticatesAndRegistersUsers, ThrottlesLogins
修改为:
use AuthenticatesAndRegistersUsers, ThrottlesLogins {
AuthenticatesAndRegistersUsers::postLogin as parentPostLogin;
}
上面做的目的是把AuthenticatesAndRegistersUsers(其实这个类继承了AuthenticatesUsers)的postLogin修改为parentPostLogin,方便我们对postLogin进行重写。
然后我们在AuthController.php中重写postLogin方法,进行我们的Email验证,并且在把流程归还给原先的parentPostLogin
public function postLogin(Request $request)
{
$this->validate($request, [
$this->loginUsername() => 'email'
]);
return $this->parentPostLogin($request);
}
然后运行成功
其实这里面主要是要看懂和学会php的trait新特性,也就是多继承
自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits 和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。
Trait 和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait 不能通过它自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用类的成员不需要继承。
从基类继承的成员被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
优先顺序示例
sayHello();
?>
以上例程会输出:Hello World!
从基类继承的成员被插入的 SayWorld Trait 中的 sayHello 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
另一个优先级顺序的例子
sayHello();
?>
以上例程会输出:Hello Universe!
通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。
多个 trait 的用法的例子
sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?>
以上例程会输出:Hello World!
如果两个 trait 都插入了一个同名的方法,如果没有明确解决冲突将会产生一个致命错误。
为了解决多个 trait 在同一个类中的命名冲突,需要使用 insteadof 操作符来明确指定使用冲突方法中的哪一个。
以上方式仅允许排除掉其它方法,as 操作符可以将其中一个冲突的方法以另一个名称来引入。
冲突解决的例子
在本例中 Talker 使用了 trait A 和 B。由于 A 和 B 有冲突的方法,其定义了使用 trait B 中的 smallTalk 以及 trait A 中的 bigTalk。
Aliased_Talker 使用了 as 操作符来定义了 talk 来作为 B 的 bigTalk 的别名。
RFID技术是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象,可快速地进行物品追踪和数据交换。最基本的RFID系统由三部分组成:电子标签(Tag) 也就是应答器:由耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。阅读器:读取(在读写卡中还可以写入)标签信息的设备。天线:在标签和阅读器间传递射频信号。
传感网是物联网的组成部分,物联网是互联网的延伸,泛在网是物联网发展的愿景
传感器是能感受规定的被测量并按照一定的规律转换成可用输出信号的器件和装置,通常由敏感元件和转换元件组成。传感器通常是由敏感元件、转换元件和转换电路组成:①敏感元件:直接感受被测量,并输出与被测量成确定关系的物理量。②转换元件:敏感元件的输出就是它的输入,抟换成电路参量。③转换电路:上述电路参数接入基本转换电路,便可转换成电量输出。
特点: ① 系统内核小。 ② 专用性强。 ③ 系统精简。 ④ 高实时性的系统软件(OS)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。 ⑤ 嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。 ⑥ 嵌入式系统开发需要开发工具和环境。应用:
1)工业控制。2)交通管理。 3)信息家电。 4)家庭智能管理系统。 5)POS网络及电子商务。6)环境工程与自然。 7)机器人。
云计算的核心技术。(1)编程模型:云计算中的编程模型对编程人员来说非常重要,为了能让用户轻松的使用云计算带来的服务和利用编程模型可以轻松的编写可以并发执行的程序。云计算系统的编程模型应尽量简单,而且保证后台复杂的并发执行和任务调度对编程人员透明。(2)数据存储技术:云计算采用了分布式存储的方式来存储数据,同时也保证了数据的高可用性、高伸缩性。通过采用冗余存储的方式来保证数据的可靠性,即同一份数据会在多个节点保存副本。另外,为了保证大量用户并行的使用云计算服务,同时满足大量的用户需求,云计算中的存储技术必须具有高吞吐率和高传输率的特点。(3)数据管理技术:云计算系统是针对超大数据量进行处理、分析,从而为用户提供高效的服务。因此,系统中的数据管理技术必须能够高效的管理这些大数据集,并且能够在这些超大规模数据中查询特定的数据,也是数据管理技术所必须解决的问题。(4)虚拟化技术:云计算平台利用软件来实现硬件资源的虚拟化管理、调度以及应用。虚拟化技术是指实现虚拟化的具体的技术性手段和方法的集合性概念。在云计算中利用虚拟化技术可以大大降低维护成本和提高资源的利用率。(5)云计算平台管理技术: 云计算系统的平台管理技术能够使大量的服务器协同工作,方便的进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化的手段实现大规模系统的可靠运营。
物联网的技术体系框架包括感知层技术、网络层技术、应用层技术和公共技术。感知层是物联网发展和应用的基础,包括传感器等数据采集设备,是数据接入到网关前的传感器网络RFID技术、传感控制技术、短距离无线通讯技术是感知层涉及的主要技术。物联网的网络层一般建立在现有的移动通讯网或互联网的基础之上。实现更加广泛的互联功能。关键技术:包含了现有的通信技术,如移动通信技术、有线宽带技术、公共交换电话网(PSTN)技术、Wi-Fi通信技术等,也包含了终端技术,如实现传感网与通信网结合的网桥设备、为各种行业终端提供通信能力的通信模块等。应用层主要包含应用支撑平台子层和应用服务子层。其中应用支撑平台子层用于支撑跨行业、跨应用、跨系统之间的信息协同、共享、互通的功能。主要是基于软件的各种数据处理技术,此外云计算技术作为海量数据的存储、分析平台,也将是物联网应用层的重要组成部分。
智能家居在英文中常用Smart Home、Intelligent Home,是以住宅为平台,兼备建筑、网络通信等,是集系统、结构、服务、管理、控制于一体,来创造一个优质、舒适、安全、便利、节能、环保的居住生活环境空间。智能家居系统的特征:1) 安全性。2) 易用性。3) 稳定性。4) 扩展性。
Laravel的验证相关资料:http://laravelacademy.org/post/240.html
在laracasts的13期视频的13分22秒,作者给出了在rules方法中可以根据条件给予不同的规则,却没有说该如何判断。
通过官方的讨论区找到了两种方法(地址:https://laracasts.com/series/laravel-5-fundamentals/episodes/13)
第一种,使用
$this->isMethod('patch')
来判断是否为更新操作。
第二种,使用
$this->input('_method')
获取表单的_method值,这个值在更新时候将为PATCH。
参考文章:http://blog.jetbrains.com/webide/2011/05/phpdoc-inspections/
第一次用phpstorm,在laracasts的教学视频中发现,在phpdoc(注释)和输入新的完整的命名空间之后,作者用了一个快捷键更新了phpdoc,还可以把完整命名空间移到头部的use中。
视频参考的坏处就是没有办法看到作者按的快捷键。
那么这个快捷键就是alt+enter
安装之后效果如下
插件名:JSON Formatter
FEATURES
在PhpStorm中使用Laravel的代码提示,可以查看下面的github
https://github.com/barryvdh/laravel-ide-helper
这里说一下安装方法
在app目录执行下面的命令
composer require barryvdh/laravel-ide-helper
然后编辑config/app.php,找到providers加入下面的代码
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
最后执行
php artisan ide-helper:generate
然后就可以尝试代码提示了,比如