目前在互联网之上基本上百分八十的站点都是使用php编写页面的,我们可能很难想象这种php在网页制作之中应用的多么广泛,但是我们的一次点击可能就是执行了20行以上的php代码,知道了这个我们就能对于php的广泛程度不那么的模糊了。其实这种工具在网站的建设之上并不是属于最上层的,其所处的位置是在中层。为什么这样说呢?首先我和大家介绍一下下层和上层是什么。上层很好理解,就是我们作为用户直接的接触到的页面部分,这一层次一般都是html格式的文本文件调用浏览器控件显示出来的,我们在制作上层的时候基本上是使用不到任何的编程语言的,我们使用到的仅仅是一些图片处理的工具或者是可视化的网页制作工具,有了这些工具就足以帮助我们构建好整个网站。
下层是什么呢?有的人说网站的下层是数据库,其实这是不准确的,在严格的意义之上说网站的底层是包括着服务器架构的。但是一般我们并不讨论这一点仅仅是说数据库就行了。数据库是多种多样的,一般任何的数据库都是有着一个数据库管理系统的,和php相配合的最密切也是在实际之中我们最常用的就是mysql了。其实这种数据库是一种开源的软件,我们可以免费的使用这种数据库,这是其和其他的商业数据库最大的区别,也正是因为这个愿因所以说很多的中小站点使用的都是这种数据库,毕竟是能节省成本的啊。
我们武汉网站建设也是推荐用户选择php加上mysql这种数据库这种模式的,不仅仅是因为这种配合是最廉价的做网站的方案,也是出于稳定性考虑的。在事实之上和php配合的最好的数据库就是mysql了。既然我们是必须选择php的那么就没有必要去选择其他的数据库了。虽然还有其他的数据库我们在几大主流的网站建设工具介绍的时候说了很多,但是这些数据库并不是能和php无缝集成的。而作为用户我们对于站点的稳定性一般都是有一定的要求的,既然免费的方案是能满足我们,那么为什么还选择其他的呢?
类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP的特性,但却是OOP语言的一个好的特性。而且大多数OOP语言都已支持此特性。PHP支持如下3种访问修饰符:public(公有的、默认的),private(私有的)和protected(受保护的)三种。
Public公有修饰符,类中的成员将没有访问限制,所有的外部成员都可以访问这个类的成员(包括成员属性和成员方法),在PHP以前的版本中,PHP中类的成员都是public的,而且在PHP新版本中如果类的成员没有指定成员访问修饰符,将被视为public。
在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法作为外部代码访问其的接口。而抽象方法就是为了方便继承而引入的。我们在类里面定义的没有方法体的方法就是抽象方法,所谓的没有方法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键abstract来修饰。
只要一个类里面有一个方法是抽象方法,那么这个类就要定义为抽象类,抽象类也要使用abstract关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性,但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用abstract来修饰。另外最重要的一点就是抽象类不能产生实例对象,所以也不能直接使用,我们经常提到过类不能直接使用,我们使用的是通过类实例化出来的对象,那么抽象类不能产生实例对象我们声明类有什么用呢?
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,在还原为原来的对象,这个过程称之为串行化。就像我们现在想把一辆汽车通过轮船运到美国去,因为汽车的体积比较大,我们可以把汽车拆开成小的部件,然后我们把这些部件通过轮船运到美国去,到了美国再把这些部件组装回汽车。
有两种情况我们必须把对象串行化,第一种情况就是把一个对象在网络中传输的时候要将对象串行化,第二种情况就是把对象写入文件或者是数据的时候用到串行化。串行化的两个过程,一个是串行化,就是把对象转化为二进制的字符串,我们使用serialize函数来串行化一个对象,另一个是反串行化,就是把对象的二进制字符串再转化为对象,我们使用unserialize函数来反串行化一个对象。
多态是除封装和继承之外的另一个面向对象的三大特性之一,我们个人看来PHP中虽然可以实现多态,但和C++还有JAVA这些面向对象的语言相比,多态性并不是那么突出,因为PHP本身就是一种弱类型的语言,不存在父类对象转化为子类对象或者是子类对象转化为父类对象的问题,所以多态的应用并不是那么的明显。
所谓多态性是指一段程序能够处理多种类型对象的能力。比如说在公司上班,每个月财务发放工资,同一个发工资的方法,在公司内不同的员工或者是不同职位的员工,都是通过这个方法发放的,但是所发的工资都是不相同的。所以同一个发工资的方法就出现了多种形态。
很多开发者写面向对象的应用程序时,对每个类的定义建立一个PHP源文件。一个很大的烦恼是不得不在每个脚本(每个类一个文件)开头写一个长长的包含文件的列表。在软件开发的系统中,不可能把所有的类都写在一个PHP文件中,当在一个PHP文件中需要调用另一个文件中声明的类时,就需要通过include把这个文件引入。不过有的时候,在文件众多的项目中,要一一将所需类的文件都include进来,是一个很让人头疼的事情,所以我们能不能在用到什么类的时候,再把这个类所在的PHP文件导入呢?这就是我们这里要讲的自动加载类。
PHP是一个所写,原来代表Personal Home Pages(个人主页)。不过在后来的发展过程中,这个缩写变为表示PHP。有人认为后一种解释是一个递归的缩写词,因为其中引用了它自身——即缩写PHP本身又出现在这个缩写中,不同的人会有不同的看法。
尽管我们的web浏览器显示的web页面的文件名以.php结尾,这仍是HTML。这是有可能的,因为页面原先作为PHP代码存储在服务器上,不过在传递到浏览器之前会转换为HTML代码。所以服务器会运行PHP代码,并在发送到浏览器查看之前把它转换为HTML代码。这说明,即使一个.php文件包含PHP代码,浏览器也绝对不会单刀,它只会看到服务器上运行PHP代码所得到的HTML代码。
在用到PHP代码的时候要遵循一些规则:1、PHP代码总是用<?php和?>包围,大多数PHP脚本只是包含有PHP代码的HTML web页面,这些标记告诉服务器哪些代码是PHP代码。2、每个PHP语句都必须以一个分号结束。如果你得代码无法执行,庆检查确保没有忘记加分号,这种情况比你想象的更常出现。3、如果web页面中有PHP代码,一个好的想法是将web服务器上的文件命名为扩展名是.php而不是.html。4、PHP变量名总是以一个美元符号开头。
要理解PHP脚本如何工作,很重要的一部分就是要掌握脚本在服务器上运行时发生了什么。大多数PHP脚本都同时包含有PHP代码和HTML代码,服务器将所有内容作为HTML传送给客户web浏览器之前,这些PHP代码会运行并转换为HTML。在PHP脚本中,PHP代码生成了确认页面中的大部分HTML内容。包围PHP代码的HTML代码则原样传送而不做任何改变。
这样做是绝对可以的,实际上,很多情况下这也是绝对必要的。因为web服务器的基本思想就是向浏览器提供HTML web页面。PHP也不会改变这一点。PHP允许你做的只是利用一些变化的信息动态改变HTML内容,如当天日期、从数据库获取的数据,或者甚至是计算得出的值(如购物车订单总金额)。所以PHP允许你管理动态放在web页面中的HTML,而不是设计时静态创建的HTML。一个页面的HTML代码间分布着PHP代码来插入重要的数据或者通过编程改变HTML,这种做法是相当常见的。
嵌在HTML文件中的PHP代码必须在单独的代码行上,还是可以嵌在一个HTML代码行上,比如作为HTML标记属性的一部分?除了需要把PHP代码放在<?php和?>标记中间之外,对于如何将PHP代码嵌入到HTML代码中没有任何限制。实际上,通常必须将一段PHP代码放在HTML代码的中间,比如设置一个HTML标记的属性时,这是PHP的一个相当合理的用法。在PHP中有的用<?开始,这是不太正确的,理论上讲,这是合法的,但是并不推荐这种做法。为支持短开始标记必须启用一个服务器设置。通常的<?php标记总能正常工作,所以最好使用这个标记,这样能确信你的代码能正常工作。
PHP代码中可以使用一个点号将多个文本串连接构成一个串。现在需要再次使用连接来构建一个消息串,将变量分布在静态文本中。不过构建这样一个长串存在一个问题,它需要一个很长的PHP代码行,这将很难阅读也很难理解。可以把PHP代码分为多行,以便阅读。不过要确保只是在间隔不会造成影响的位置划分代码,如连个连接串之间,而不是一个串的中间。然后在最后一行代码的末尾放置一个分号来结束这个PHP语句。
只要谨慎安排如何划分代码,一个很长的PHP代码行可以跨多行。只是很好地组织PHP代码并不意味着它的输出自动地会看上去很好。组织PHP代码,从而能更好地理解它,这与格式化用户将看到的PHP代码的输出完全是两码事。你通常会使用HTML标记格式化PHP代码的输出,因为在大多数情况下,PHP都用于自动生成一个web页面。但是这里并非如此。在这里我们要生成一个消息,这是纯文本而非HTML。不过这需要另外一步,其中涉及为消息设置内容类型首部。首部和内容类型有些超出这里讨论的范围,所以我们一直坚持使用纯文本消息作为email响应。