首页 > 代码库 > 依然上传一些笔记。

依然上传一些笔记。

void 常用在定义function时,function后的()内没有参数的时候。(在语言中建议这样使用,以保持其规范性)

 

try{}

catch{}是异常的普遍表示方式,但它并不是唯一的,比如PDO就有其自己的异常表达方式。

Instanceof在定义class时,代表一个判断,如A instanceof  B,就带表判断A是不是的B实例(或对象),这种书写方式比赋予一个静态变量null,再在if里判断这个静态变量是不是空要更加规范。

CcreateRretrieve读)UupdateDdelete)特指增删改查,全网通用。

 

PDO预处理的语法举例如下图:技术分享

这其中,$cbindParam后面的两个值,前一个只能是字段名,后一个只能是一个被定义了的变量,而不能直接跟字段值。

为了看着简单,最后定义预处理内容的几行完全可以写为数组的形式,方便调用。

(增删改都用这种方式,但查的时候应该有数据返回,因此我们应该让查出来的数据输出到浏览器上,用fetch的方法。)

贴图如下:

技术分享

需要声明的是,fetchALL虽然好用,可以瞬间输出所有查到的东西,但一般情况下尽量别用,因为它会一次性查询所有数据,若数据过大,会占用极大的资源。

 

我了个丢:学习一个新东西并不难,难的是,学习新东西时,要将其写成一个可以保存为模板的函数……方便随时调用,随时修改的函数。

 

创建模板函数的时候,第一步是想清楚此函数需要多少个参数,要执行什么样的功能,功能上是否严谨,第二步是想办法实现它。

执行第二步的难点在于,函数的参数是固定的,但参数的类型是多变的,创建的模板应该方便修改,而不是每次都需要手动输入许多东西(比如单双引号),模板函数的目标是简单化,并且不出错。所以在字符串拼接、调取某个数组的下标、下标后的值时,一定要处理好其中的关系。

如下图:

技术分享

函数参数如idname等,后面的值是不一样的类型,需要用到字符串和数组函数,将不符合条件的内容转化为整形或字符串,并且让函数自动加上引号或冒号、逗号等,规范其格式。

 

Parent::方法名()可以在继承了父类属性的子类内调用父类的方法,就算在子类里面,父类的方法已经被重写,也可以调用原始的父类方法,但不能用此方法调用父类的属性,会出现致命错误。

 

当子类重写父类的方法时,子类的权限不能比父类的权限更严格(看个人理解),也就是说,若父类的方法权限是public,那么子类的方法就不能是protectedprivate,只能是public,而反过来,若父类的方法是private,那么子类就可以是protectedprivatepublic。若父类的方法是protected,那么子类的方法就只能是protectedpublic

 

魔术方法的特点:

      以两个下划线开头;

      在某种情况下被自动调用;

      方法名是固定的;

      有固定的作用;

 

私有属性专用:

__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

依然上传一些笔记。