第20章企业级项目开发与学习的异同

1.没有备注
2.主键没有自增
3.密码应该>=32,因为md5()加密后就是32位的,本着为用户负责的思想,密码必须加密,不允许使用明文密码,注意:md5()是散列,不是加密,从密码学的角度来看,能够加密就一定能够解密,但是md5()是不可逆的。
4.DEFAULT NULL对于性能的影响比较大,改为not null
5.应该给username字段加索引,加快检索速度
6.MyIsam不支持事物,建议改为InnoDB

点我阅读全文












17-7类属性检测与删除__isset()和__unset()–PHP实战开发教程

魔术方法:
1.类中以双下划线开头的方法,这是由系统内置的,用户方法不要用双下划线开头;
2.魔术方法由系统在一定条件下自动触发调用,用户不能直接调用;

注意:将类中的私有成员前面添加单下划线是一个好习惯;
例如: private $_salary; private function _listUsers(){…}

使用魔术方法实现几个对象访问拦截器
所谓拦截器:就是对用户的一些错误或非法访问进行检测和控制。

点我阅读全文


17-5如何克隆对象–PHP实战开发教程

对象的复制与克隆
1.默认情况下,对象是引用传递(实际上是对象标识符的复制,后面会详细说)
2.也就是说二个对象变量实际上是引用的是同一个对象
3.如果要创建一个新的对象,必须使用clone关键字来克隆当前对象
4.当使用clone关键字时,如果类中有__clone()会自动调用
5.__clone()方法运行在新创建的对象上面
6.__clone()方法能控制我们复制什么,以及克隆时要完成的基本操作

点我阅读全文


17-3细说trait与继承-–PHP实战开发教程

Trait是什么?
1.trait是为单继承语言量身定制的代码复用机制;
2.之前可以通过函数或类来实现代码复用;
3.trait可以简单的理解为一个类方法的集合,工作在父类与子类之间;
4.但是trait不仅仅局限于方法集合,还支持抽象,静态与属性;
5.当前类成员会覆盖trait类成员,而trait中的成员,又可以覆盖同名类成员
6.重要提示:trait不是类,不能实例化,切记切记

点我阅读全文

17-2细说接口与实现-–PHP实战开发教程

接口
1.使用关键字:interface
2.类是对象的模板,接口是类的模板
3.接口看作是一个特殊的类
4.接口中的方法,只声明不实现,与抽象类一样
5.接口中的方法必须是public,支持static
6.接口中可以声明类常量const,但不允许被类或子接口覆盖
7.用类实现一个接口使用implements 关键字
8.一个类可以实现多个接口,多个接口之间用逗号分开

点我阅读全文

17-1抽象类是什么–PHP实战开发教程

抽象类
1.使用关键字: abstract
2.类中只要有一个方法声明为abstract抽象方法,那么这个类就必须声明为抽象类
3.抽象方法只允许有方法声明与参数列表,不允许有方法体;
4.因为抽象方法的不确定性,所以抽象类禁止实例化,仅允许通过继承来实例化;
5.继承抽象类的子类中,必须将抽象类中的所有抽象方法全部实现
6.子类成员的访问限制级别必须等于或小于抽象类的约定,例如抽象类是protected,子类必须是
protected 或者 public 不允许是private
7.子类方法参数必须与抽象类方法参数完全一致,但允许增加默认参数

点我阅读全文

16-5细说static与后期静态绑定–PHP实战开发教程

细说static

一、用途:
1.类中声明静态成员
2.函数中声明静态变量
3.后期静态绑定

二、特点:
1.静态成员属于类,必须用类访问
2.静态方法比较特殊,允许用对象访问,但不推荐
3.必须使用范围解析符::访问,不允许使用对象访问符->访问
4.静态属性仅允许使用字面量(字符/数值/数组)或常量进行初始化(禁止表达式/变量/对象)

点我阅读全文


16-3eval()与创建匿名函数–PHP实战开发教程

eval()与create_function()
一、eval()
1.eval()函数把字符串按照 PHP 代码来计算
2.该字符串必须是合法的 PHP 代码,且必须以分号结尾
3.如果没有在代码字符串中调用 return 语句,则返回 NULL
4.如果代码中存在解析错误,则 eval() 函数返回 false
5.该函数对于在数据库文本字段中供日后计算而进行的代码存储很有用

点我阅读全文

16-2用户回调代理执行函数–PHP实战开发教程

二:两个执行回调的函数
什么是回调?
答:
我们调用php系统提供的函数叫直接调用,也叫: 直调
php系统调用用户自定义的函数,必须要通过一个代理函数来调用,叫间接调用,也叫回调
以下是两个系统定义的函数,用来执行回调
1.call_user_func(callable,args…)
2.call_user_func_array(callable,[…])

点我阅读全文




15-2类的自动加载–PHP实战开发教程

类的自动加载
1.如果要在当前脚本中使用很多对象时,就不得不在头部使用require或include加载很多的类文件
2.为了避免这种情况,推荐使用类的自动加载器,用户在创建对象时,就不必关心当前类是否已导入
3.类的自动加载,使用了标准php函数库中的spl_autoload_register()函数来实现
4.sql_autoload_register(类名),多个类名请放在数组中​

点我阅读全文

15-1类属性与类常量–PHP实战开发教程

知识点:
类属性与类常量
1.类属性仅允许使用以下类型的数据进行初始化
标量和数组字面量:字符串,数值,常量,数组,原型文档(php5.3+)
2.不允许使用:变量,表达式,对象
3.类常量使用关键字const声明,不允许设置访问限制符,强制为public,不能更改
4.类常量是属性类的,不属性它的某个实例对象,必须使用类才可以访问
5.访问类常量要使用范围解析符::,双冒号
在类中使用关键字self表示当前类,在外部可直接使用类名

点我阅读全文

14-3魔术方法__get()和__set()–PHP实战开发教程

1.类魔术方法:__get(),__set()实现属性查询器和设置器
2.魔术方法之前介绍过了,需要特定场景触发,由对象自动调用
3.__get($name): 外部通过对象获取对象私有属性或不存在的属性时自动触发
4.__set($name,$value):外部设置私有属性或不存在属性值的时候自动触发
5.魔术方法可以适用于所有存在或不存在的类属性,不需要再为每个属性创建对应的访问接口

点我阅读全文