include()与require()的对比

 更新时间:2016年11月25日 15:16  点击:1555

php的require()性能与include()相类似。不同之处在于,对include()来说,在include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。
这就意味着假如有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。另一方面,假如每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。

PHP是一种用于创建动态WEB页面的服务端脚本语言。如同ASP和ColdFusion,用户可以混合使用PHP和HTML编写WEB页面,当访问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访问端的浏览器。但是与ASP或ColdFusion不同,PHP是一种源代码开放程序,拥有很好的跨平台兼容性。用户可以在Windows NT系统以及许多版本的Unix系统上运行PHP,而且可以将PHP作为Apache服务器的内置模块或CGI程序运行。
  除了能够精确的控制WEB页面的显示内容之外,用户还可以通过使用PHP发送HTTP报头。用户可以通过PHP设置cookies,治理用户身份识别,并对用户浏览页面进行重定向。PHP具有非常强大的数据库支持功能,能够访问几乎目前所有较为流行的数据库系统。此外,PHP可以与多个外接库集成,为用户提供更多的实用功能,如生成PDF文件等。
用户可以直接在WEB页面中输入PHP命令代码,因而不需要任何非凡的开发环境。在WEB页面中,所有PHP代码都被放置在"<?php"和" ?>"中。此外,用户还可以选择使用诸如<SCRIPT LANGUAGE="php"></SCRIPT>等的形式。PHP引擎会自动识别并处理页面中所有位于PHP定界符之间的代码。
  PHP脚本语言的语法结构与C语言和Perl语言的语法风格非常相似。用户在使用变量前不需要对变量进行声明。使用PHP创建数组的过程也非常简单。PHP还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码。
 


PHP语法概述

A. 基本语法

即使初次接触PHP的用户也会发现自己对PHP的语法风格并不生疏。
例如:<?php

echo "Hello!";

?>

显示结果为"Hello!"。

PHP中,所有的变量都以标识"$"开头。我们可以对上述代码做如下改动:
<?php

$greeting = "Hello!";

echo $greeting;

?>

改变后的代码显示结果不变。
PHP中使用"."符号连接不同的字符串,而其它的算术运算符则继续了流行编程语言的风格。举例如下:
<?php

$greeting = "Hello!";

$num = 3 2;

$num ;

echo "$greeting $num people!";

?>

显示结果为"Hello!6 people!"。

  PHP对各种运算符及运算规则都有一套完整的规定,假如用户具有C或C 语言的编程背景的话,可以发现一切都得心应手。
  与Perl语言一样,在PHP中,假如在双引号包含的字符串中含有变量的话,该变量将用相应的变量值替换;假如字符串被单引号包含,则不做替换。例如:
<?php

$name = 'PETER';
$greeting_1 = "Hello, $name!";
$greeting_2 = 'Hello, $name!';
echo "$greeting_1n";
echo "$greeting_2n";
?>
显示结果为:
Hello, PETER!
Hello, $name!
(注:上述代码中的"n"为换行符,只能在双引号字符串下使用)
 

B. 变量

PHP答应用户象使用常规变量一样使用环境变量。例如,在页面http://www.nba.com/scores/index.html中包含如下代码:

1)函数的例子
php: function inc($val)
{ return $val 1;}

过程也是个函数,只不过没有返回值。
jscript, javascript:
function inc(val)
{ return val 1;}
过程的定义同上。
VBScript:
function inc(val)
inc = val 1
end function
procedure
sub inc2(byref val)
val = val 1
end sub
2)类的例子
php:
class parent {
var property;
function parent() { }
function method() { }
}

/* 继续 */
class child extends parent { var property= new value ;
}

jscript or javascript:
class parent {
property=value
function parent() function method() { } }

不支持继续(原文是这样,但似乎现在也支持了)
vbscript:
不支持类((原文是这样,但现在也支持了)

3)变量的范围
php:变量在函数或类外定义是答应的是全局变量;也可以在函数和类中定义局部变量。
不像其它的语言,在使用变量时,你必须声名一个全局变量在函数和类中使用要害字global.
$globalvar = 1;
function show_global( ) {
global $globalvar;
print $globalvar;
}
jscript or javascript:
类似PHP, 在函数中不需声明全局变量.

经常看到这样的语句:
$file = fopen($filename, 'r') or die("抱歉,无法打开: $filename");
or在这里是这样理解的,因为在PHP中并不区分数据类型,所以$file既可以是int也可以bool,所以这样的语句不会报错。但其处理过程可能有些朋友不大明白。
其实在大多数的语言中, bool or bool这样的语句中,假如前一个值为真后一个值就不会再判定了。这里也是的,所以假如fopen函数执行正确的话,会返回一个大于0的int值(这其实就是“真”),后面的语句就不会执行了。假如fopen函数执行失败,就会返回false,那么就会判定后面的表达式是否为真了。
结果执行了die()之后,不管返回什么,程序都已经停止执行了,并且显示指定的出错信息,也就达到了调试的目的。
就这样。:)

PHP5的访问方式答应限制对类成员的访问. 这是在PHP5中新增的功能,但在许多面向对象语言中都早已存在. 有了访问方式,才能开发一个可靠的面向对象应用程序,并且构建可重用的面向对象类库.

  像C 和Java一样,PHP有三种访问方式:public,private和protected. 对于一个类成员的访问方式,可以是其中之一. 假如你没有指明访问方式,默认地访问方式为public. 你也可以为静态成员指明一种访问方式,将访问方式放在static要害字之前(如public static).

  Public成员可以被毫无限制地访问.类外部的任何代码都可以读写public属性. 你可以从脚本的任何地方调用一个public方法. 在PHP的前几个版本中,所有方法和属性都是public, 这让人觉得对象就像是结构精巧的数组.

  Private(私有)成员只在类的内部可见. 你不能在一个private属性所在的类方法之外改变或读取它的值. 同样地,只有在同一个类中的方法可以调用一个private方法. 继续的子类也不能访问父类中的private 成员.

  要注重,类中的任何成员和类的实例都可以访问private成员. 看例子6.8,equals方法将两个widget进行比较.==运算符比较同一个类的两个对象,但这个例子中每个对象实例都有唯一的ID.equals 方法只比较name和price. 注重equals方法如何访问另一个Widget实例的private属性. Java和C都答应这样的操作.

  Listing 6.8 Private members


<?php
class Widget
{
private $name;
private $price;
private $id;

public function __construct($name, $price)
{
$this->name = $name;
$this->price = floatval($price);
$this->id = uniqid();
}
//checks if two widgets are the same 检查两个widget是否相同
public function equals($widget)
{
return(($this->name == $widget->name)AND
($this->price == $widget->price));
}
}
$w1 = new Widget('Cog', 5.00);
$w2 = new Widget('Cog', 5.00);
$w3 = new Widget('Gear', 7.00);

//TRUE
if($w1->equals($w2))
{
print("w1 and w2 are the same<br>n");
}

//FALSE
if($w1->equals($w3))
{
print("w1 and w3 are the same<br>n");
}

//FALSE, == includes id in comparison
if($w1 == $w2) file://不等,因为ID不同
{
print("w1 and w2 are the same<br>n");
}
?>
  一个子类可能改变通过覆写父类方法来改变方法的访问方式,尽管如此,仍然有一些限制. 假如你覆写了一个public类成员,他子类中必须保持public. 假如你覆写了一个protected成员,它可保持protected或变成public.Private成员仍然只在当前类中可见. 声明一个与父类的private成员同名的成员将简单地在当前类中建立一个与原来不同的成员. 因此,在技术上你不能覆写一个private成员.

  Final要害字是限制访问成员方法的另一个方法. 子类不能覆写父类中标识为final的方法. Final要害字不能用于属性.

//haohappy注:PHP5的面向对象模型仍然不够完善,如final不像Java中那样对Data,Method甚至Class都可以用。

[!--infotagslink--]

相关文章

  • VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h”或者检测到 #include 错误,请更新includePath)(POSIX API)

    这篇文章主要介绍了VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h” 或者 检测到 #include 错误。请更新includePath) (POSIX API),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-13
  • require、backbone等重构手机图片查看器

    这篇文章主要为大家详细介绍了require、backbone等重构手机图片查看器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-11-22
  • 基于mybatis中<include>标签的作用说明

    这篇文章主要介绍了基于mybatis中<include>标签的作用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-20
  • include包含头文件的语句中,双引号和尖括号的区别(详解)

    下面小编就为大家带来一篇include包含头文件的语句中,双引号和尖括号的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • Lua中的loadfile、dofile、require详解

    这篇文章主要介绍了Lua中的loadfile、dofile、require详解,本文分别用实例讲解它的用法和特点等内容,需要的朋友可以参考下...2020-06-30
  • perl文件包含(do,require,use)指令介绍

    Perl中的文件包含,有三种方法:do, require, 以及use,这里简单的介绍下方便需要的朋友...2020-06-29
  • php include提示failed to open stream: Permission denied in错误

    出现failed to open stream: Permission denied in是apache运行用户没用权限去访问指定的文件了,所以导致目录文件打不开了。 在打开浏览器时提示 Warning: includ...2016-11-25
  • php中set_include_path和require,include介绍

    在php中set_include_path会导致require,include用法不一样了,对于这个问题我们来看一个简单的例子,具体如下。 在PHP中经常使用include,require来引用其他文件,使用相...2016-11-25
  • php中文目录 include错误解决访求

    php教程中文目录 include错误解决访求 include_path='.;c:php5pear'的错误 warning: unknown: failed to open stream: no such file or directory in unknown on line...2016-11-25
  • C++中#include头文件的示例详解

    在C++中,所有的文件操作,都是以流(stream)的方式进行的,fstream也就是文件流file stream。这篇文章主要介绍了C++中#include头文件,需要的朋友可以参考下...2020-06-25
  • PHP学习:include()和require()的区别

    include()和require()的区别 这相信是PHP中最基本的问题了,也是很多公司面试时必考的题呵呵。 给大家复习一下: require() :如果文件不存在,会报出一个fatal error.脚本...2016-11-25
  • 详解handlebars+require基本使用方法

    本文主要对handlebars+require基本使用方法进行详细介绍,文章尾部会附上完整代码供大家参考。需要的朋友一起来看下吧...2017-01-09
  • 通过Include和Require函数实现代码重用

      如果你做过各种大小的Web站点,一定会对重用代码段的重要性深有体会,不管是HTML还是PHP代码块。比如需要一年修改一次包含版权信息的页脚,而你有1000个Web页(就算是10...2016-11-25
  • php 中require和include引用url和 php的文件编码转换函数问题

    本文章同时解决两个问题就是php 中require和include引用url和 php的文件编码转换函数问题,有需要的朋友可以看看哈,参考一下。 PHP配置中“allow_url_fopen&rd...2016-11-25
  • php中include require utf-8文件时顶部产生空行的

    本文章来介绍关于php中include require utf-8文件时顶部产生空行的解决办法有需要学习的朋友可参考。 include()产生一个警告而require()则导致一个致命错误。换...2016-11-25
  • 再讲php中require(),include(),require_once()和include_once()他们的区别

    本文章介绍了php四种调用外部文件函数用法和区别,有需要了解的朋友可以参考一下。 引用文件的方法有两种:require 及 include。两种方式提供不同的使用弹性。 requi...2016-11-25
  • 简单谈谈PHP中的include、include_once、require以及require_once语句

    include() 、require()语句包含并运行指定文件。这两结构在包含文件上完全一样,唯一的区别是对于错误的处理。require()语句在遇到包含文件不存在,或是出错的时候,就停止即行,并报错。include()则继续即行。...2016-04-26
  • PHP Include与require

    PHP Include 文件 服务器端包括 您可以插入的内容的文件到PHP文件之前,服务器执行它,与包括( )或要求( )函数。这两项职能是相同的各种方式,但他们如何处理错误。在包括( )函...2016-11-25
  • php set_include_path 函数

    php set_include_path 函数 set_include_path ( PHP 4中“ = 4.3.0 , PHP 5中) set_include_path -集和include_path配置选项 描述 字符串set_inclu...2016-11-25
  • node.js require() 源码解读

    学习 Node.js ,必学如何使用 require 语句。本文通过源码分析,详细介绍 require 语句的内部运行机制,帮你理解 Node.js 的模块机制...2015-12-14