首页 > 代码库 > 依然上传一些笔记。
依然上传一些笔记。
void 常用在定义function时,function后的()内没有参数的时候。(在语言中建议这样使用,以保持其规范性)
try{}
catch{}是异常的普遍表示方式,但它并不是唯一的,比如PDO就有其自己的异常表达方式。
Instanceof在定义class时,代表一个判断,如A instanceof B,就带表判断A是不是的B实例(或对象),这种书写方式比赋予一个静态变量null,再在if里判断这个静态变量是不是空要更加规范。
C(create)R(retrieve读)U(update)D(delete)特指增删改查,全网通用。
PDO预处理的语法举例如下图:
这其中,$c,bindParam后面的两个值,前一个只能是字段名,后一个只能是一个被定义了的变量,而不能直接跟字段值。
为了看着简单,最后定义预处理内容的几行完全可以写为数组的形式,方便调用。
(增删改都用这种方式,但查的时候应该有数据返回,因此我们应该让查出来的数据输出到浏览器上,用fetch的方法。)
贴图如下:
需要声明的是,fetchALL虽然好用,可以瞬间输出所有查到的东西,但一般情况下尽量别用,因为它会一次性查询所有数据,若数据过大,会占用极大的资源。
我了个丢:学习一个新东西并不难,难的是,学习新东西时,要将其写成一个可以保存为模板的函数……方便随时调用,随时修改的函数。
创建模板函数的时候,第一步是想清楚此函数需要多少个参数,要执行什么样的功能,功能上是否严谨,第二步是想办法实现它。
执行第二步的难点在于,函数的参数是固定的,但参数的类型是多变的,创建的模板应该方便修改,而不是每次都需要手动输入许多东西(比如单双引号),模板函数的目标是简单化,并且不出错。所以在字符串拼接、调取某个数组的下标、下标后的值时,一定要处理好其中的关系。
如下图:
函数参数如id、name等,后面的值是不一样的类型,需要用到字符串和数组函数,将不符合条件的内容转化为整形或字符串,并且让函数自动加上引号或冒号、逗号等,规范其格式。
用Parent::方法名()可以在继承了父类属性的子类内调用父类的方法,就算在子类里面,父类的方法已经被重写,也可以调用原始的父类方法,但不能用此方法调用父类的属性,会出现致命错误。
当子类重写父类的方法时,子类的权限不能比父类的权限更严格(看个人理解),也就是说,若父类的方法权限是public,那么子类的方法就不能是protected和private,只能是public,而反过来,若父类的方法是private,那么子类就可以是protected、private和public。若父类的方法是protected,那么子类的方法就只能是protected和public。
魔术方法的特点:
以两个下划线开头;
在某种情况下被自动调用;
方法名是固定的;
有固定的作用;
私有属性专用:
__set():在外部为某个类的私有属性重新赋值时被自动调用,固定作用是,接收所有被重新赋值的私有属性的变量名和值,(一条代码,接收所有,但是分开调用。)常用在报告错误上。
__get():在外部要调用查看某个类的私有属性时被自动调用,固定作用是,在外部想要查看某个类的私有属性时,反馈想要自定义的值。常用在对用户的警告上。
__inset():当外部使用inset(私有属性)时被调用。(意思是当外部使用public属性时不会被调用生效。)
__unset():当外部使用unset(私有属性)时被调用。它用来接收这个私有属性,并且根据自定义的方法在内部对私有属性进行处理(一般情况下是删除这个私有属性)。(与inset相同,当外部使用public属性时不会被调用生效。)
__call(): 当外部调用类中不存在(或非public权限修饰)的方法时被调用,用来接收这个方法名和所有参数。一般来说有两个参数,前一个是方法名,后一个是数组。
__tostring():当实例化的对象被当做字符串使用的时候被调用。且非常严格,只对字符串有效。
__autoload():当实例化一个不存在的类时,此方法被自动调用。它可以自动加载要实例化的类。(这样就可以知道用户的请求,并且做出对应的判断。)需要声明的是,autoload函数不能定义在类的内部,而是必须放在外部。常用来引入外部文件,自动调取用户所要求的类。
__clone():当使用clone结构去创建一个新对象时,自动加载要实例化的类。用来为clone结构添加其他动作,如果将其加在单利里面,可以屏蔽克隆。
clone:没有两道下划线,也没有括号,甚至没有参数,用于复制,快速克隆一个对象,新克隆出来的对象与它的模板相等不全等,它可以瞬间复制一个单例出来,破坏单例“只允许执行一次”的规则。
serialize:将对象保存为文件。(保存为文件的原因是,资源内的任何东西都需要以一个文件类型来在网上传输。)与之对应的有unserialize,可以将保存成文件类型的类对象或者类再还原回来。这个方法称为“串化”和“反串化”。
namespace(命名空间):为了避免出现一个文件夹内不能创建两个同名变量(类、常量等)的问题,用代码创建一个虚拟的文件夹。
两个文件夹内的同名文件在运行和调用的时候互不影响,且存在与真实创建文件夹一样的父子关系,需要声明的是,Windows识别/和\,它认为正斜线和反斜线都是文件夹的分割方式,但linux系统只识别\,不识别/。
用use可以调用某个命名空间,后面直接加上空间名就可以,也可以为其取别名,在use后直接加as。
而类似 new \first\c();的称作完全限定或绝对限定。
而前面不加类似于根的\的方法,称为相对新丁,非完全限定。
不加任何修饰的,成为非限定或不限定。
命名空间的一个显著作用是:执行自动加载。
在第一个命名空间的上方,不允许有任何的输出(包括空格、回车、div等)。
魔法常量(区分大小写):
__LINE__:当前所在的行数。
__FILE__:当前的文件名(包含完整路径)。
__DIR__:当前文件所在的路径。
__FUNCTION__:获取当前的函数名。
__METHOD__:获取当前的方法名。
__NAMESPACE__:获取当前所在命名空间名。
__CLASS__:获取当前的类名。
最后来个卷轴:
+====================+
|| M ||
|| ||
|| D ||
|| ||
|| Z ||
|| ||
|| Z ||
|| ||
|| ||
|| ||
|| ||
|| ||
+====================+
本文出自 “12244243” 博客,请务必保留此出处http://12254243.blog.51cto.com/12244243/1892401
依然上传一些笔记。