0

0

PHP基础教程六之函数、常量

黄舟

黄舟

发布时间:2017-03-01 09:40:55

|

1441人浏览过

|

来源于php中文网

原创

本节讲解的内容

  • include和include_once

  • require和require_once

  • 常量

  • 引入文件和常量结合案列

  • 变量操作函数

    立即学习PHP免费学习笔记(深入)”;

  • 输出语句

前言

在上篇文章中,我们讨论了函数的应用,但是只是在一个文件中进行函数的调用,当我们想在不同的文件中进行函数的调用时,上节的内容就不能够实现,但是PHP语言提供了引入的概念。让这个问题得到了完美的解决。

文件的引用

如果某个文件,比如a.php 文件,要使用 b.php 文件的函数,这是就需要我们把b文件中的函数引入到a文件中。PHP位我们提供了四种方式来达到目的, 分别是 include , include_once, require , require_once 。

虽然总共有四种方式,但是每个的引入方式不一样。

include和include_once

从名字可以看到,这两个引入都有include,他们两个共同的特点就是当引入的文件出错的时候(因为你不能保证每个引入的文件都是正确的)不会终止程序,而是会接着执行下去的。

结果:
这里写图片描述

include

include,一种引入文件的形式,它有两个特点:

  1. 当include引入的文件出错的时候,程序不会立即停止,它会一直执行下去。

  2. 如果文件已经引入了,它会重复的引入,

第一个特点上面已经论述过,第二个特点,当在代码中重复的使用include引入同一个文件,它会重复的引入。

结果:
这里写图片描述

在上面可以看到在此时用include它会报错,意思是说你之前已经引入了文件,不能再次引入。

include_once

include_once它和include很像,除了引入出错会继续执行外,还有一个是当文件已经引入后,它不会再次引入。

可以看到上面的代码并没有报错。

require和require_once

require和require_once是另外一种文件引入的方式。他们共有的特点是:

当引入的文件出错的时候,就会终止程序,不在向下执行。

结果:
这里写图片描述

require

require,一种引入文件的形式,它有两个特点:

  1. 当require引入的文件出错的时候,程序会立即停止。

  2. 如果文件已经引入了,它会重复的引入,

第一个特点上面已经论述过,第二个特点,当在代码中重复的使用require引入同一个文件,它会重复的引入。

结果:
这里写图片描述

在上面可以看到在此时用require它会报错,意思是说你之前已经引入了文件,不能再次引入。

require_once

require_once它和require很像,除了引入出错会终止程序外,还有一个是当文件已经引入后,它不会再次引入。

可以看到上面的代码并没有报错。


系统为我们提供了四种方式,但我们怎么知道选择什么样的引入方式呢?

如果我们在引入某些文件(比如获取数据库连接,打开文件等。建议使用_once这种方式来引入文件),防止资源浪费。而我们在开发中经常使用require和require_once这种方式。

更推荐使用require_once这种方式。因为使用这种方式可以节省资源,同时可以避免重复定义出现的错误。

文件引入机制

文件引入的深入了解:在PHP中当在一个文件中引入另外一个文件的时候,就会去执行引入的文件,我们在引入的文件中可以返回一个值,也可以不返回,直到文件结束。

';
    require_once 'b.php'; //引入b文件
    echo '当执行完引入的文件后执行这句话
'; b.php文件 '; return; ......结果...... 这是引入的文件 这是另外一个文件 当执行完引入的文件后执行这句话

仔细看到上面的代码,可以看到在引入的文件中使用return终止语句,并没有终止主文件的终止。它们虽然在同一个内存中运行,但是不影响各自的运行。

引入文件的return问题

关于return的问题总结起来总共有三点:

  • 在我们引入一个文件时,在默认的情况下,成功返回1

  • 我们也可以根据实际情况返回数据,比如一个数组。

  • 在引入文件过程中,当遇到被引入文件的return语句时,引入过程将终止,返回主文件,继续执行。


常量

在我们的开发过程中,往往需要一些全局性的值,就是已经确定并且我们在以后不会修改他们,比如说网站的根目录路径,这时候我们已经不能够使用变量,因为变量我们是可以修改的。在这里就介绍PHP中另外一种常量

常量:常量可以理解成是一种特殊的变量,一旦被定义,就不能再改变或者取消定义[即: 不能unset常量].

那我们用什么来定义常量呢?PHP中提供了两种方法来定义常量。

  • define(string $name ,常量的值);定义一个常量

  1. 第一个参数就是我们的常量名。

  2. 第二个参数是常量的值;仅允许标量和 null 。标量的类型是 integer , float , string 或者 boolean 。 也能够定义常量值的类型为 resource ,但并不推荐这么做,可能会导致未知状况的发生。

  • const 在 PHP 5.3.0 以后,可以使用 const 关键字在类定义之外定义常量。

    杰易OA办公自动化系统6.0
    杰易OA办公自动化系统6.0

    基于Intranet/Internet 的Web下的办公自动化系统,采用了当今最先进的PHP技术,是综合大量用户的需求,经过充分的用户论证的基础上开发出来的,独特的即时信息、短信、电子邮件系统、完善的工作流、数据库安全备份等功能使得信息在企业内部传递效率极大提高,信息传递过程中耗费降到最低。办公人员得以从繁杂的日常办公事务处理中解放出来,参与更多的富于思考性和创造性的工作。系统力求突出体系结构简明

    下载
  • 我们在定义常量的时候,这两个都可以使用。

    ';
        const TAX = 0.012;
        echo TAX;
        ......结果......
        3.1415926
        0.012

    从上面的代码可以看出常量的定义和变量使不一样的,它们两个是有区别的。

    常量和变量的区别:

    1. 常量前面没有美元符号($);

    2. 常量只能用 define() 函数定义,而不能通过赋值语句;

    3. 常量可以不用理会变量的作用域而在任何地方定义和访问;

    4. 常量一旦定义就不能被重新定义或者取消定义;

    5. 常量的值只能是标量。

    6. 常量的名字一般都是大写。

    处理我们自己定义的常量外,PHP系统还给我们定义了一些常量,比如我们在讲整型的时候用到的PHP_INT_MAX,获取整型的最大值。

    魔术常量

    PHP语言可以说有一个特色,它的语法中有魔术这个概念。在系统常量中就有魔术这个概念,PHP称之为魔术常量,那什么是魔术常量?

    魔术常量:PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。(一大堆看不懂的话-_-);

    简单的来说就是系统总共提供了八个魔术常量,它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写。

    PHP的魔术常量:

    1. __LINE__  文件中的当前行号。

    2. __FILE__  文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起, __FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

    3. __DIR__  文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =

    4. __FUNCTION__  函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

    5. __CLASS__  类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。

    6. __TRAIT__  Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

    7. __METHOD__  类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

    8. __NAMESPACE__  当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

    示例:

    ';
        const TAX = 0.012;
        echo TAX . '
    '; echo __DIR__; //使用魔术常量来获取当前文件所在的绝对路径。 ......结果...... 3.1415926 0.012 D:\mywamp\Apache24\htdocs\zendstudio\yunsuanfu

    可以看到在使用__DIR__这个魔术常量的时候,在运行后,自动获取文件当前的绝对路径。

    上面的内容就是常量的使用,当然还是多练。当我们在开发中怎么利用魔术常量和文件引入开发呢?


    引入文件和魔术常量的最佳示例

    在开发中我们在引入文件的时候,文件的路径是一个关键,我们有两种选择,一种是相对路径,一种是绝对路径。开发中我们往往选择是绝对路径,也就是文件所在的路径比如c:/mywamp/apache24/…,这种格式就可以理解为绝对路径。

    在这里我们来对引入文件和魔术常量进行一个综合应用:

    这里写图片描述

    在上面使我们在开发中可能用到的文件夹,今天我们只是简单的进行使用,就是后面的流程

    • 在lib文件夹下有一些f函数文件,里面有我们使用的函数,我们可以定义为function.php

    • 在lib的init.php中使用魔术常量来定义一些常量,用来表示文件的绝对路径,就算你把项目的路径换了,也是可以的,同时在init.php中引入函数库

    • 在index.php中引入init.php文件。

    function.php:

    init.php

    在init中我们使用魔术常量__DIR__来动态的获取文件的所在目录,然后通过dirname()(说明给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名),得到项目的根目录,然后根据根目录得到各个文件夹的绝对路径,在最后通过绝对路径引入函数文件。

    index.php

    ';
        echo $sub;
        ......结果......
        33
        5

    可以看到在index.php文件中可以正常的使用lib下的函数文件里面的函数。

    上面的就是引入文件和魔术常量的最基本的用法。

    函数的结尾

    通过上面的介绍,算是基本介绍完了函数的使用和常量的使用,学完函数,我们在来回顾回顾以前不知道的。

    操作变量的函数

    • isset() : 检测变量是否设置,未定义或值为null时返回假

    • unset() : 销毁指定的变量。你可以在函数中传入变量进行销毁。

    • empty() : 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE ,那么它会被认为不存在。

    • is_int() : is系列有很多函数,用来判断变量的类型,如is_int,当变量是整型类型的,返回true,否则返回false。

    PHP输出语句

    echo

    echo 实际上不是一个函数,是PHP语句,所以后面可以不适用括号,当你想用echo输出多个值得时候,可以用逗号隔开。echo并没有返回值。

    print

    print 和echo用法一样,但是echo的速度要比print的速度快,print也不是一个函数,它是有返回值得,总是返回1.

    print_r

    print_r(变量)打印关于变量的易于理解的信息。如果变量是string,integer,float将会直接输出其值,如果变量是一个数组,则会输出一个格式化后的数组。

    printf

    printf函数返回一个格式化后的字符串,它的语法是

    printf(format,arg1,arg2)

    var_dump

    var_dump()一般我们是输出变量的内容,类型和字符串的内容,类型,长度,从而我们可以看到变量的类型是什么。

    总结

    通过这两节的讲解,函数和常量的知识算是说完了,函数的调用过程和操作在以后开发中我们一定要了然于胸。

     以上就是PHP基础教程六之函数、常量的内容,更多相关内容请关注PHP中文网(www.php.cn)!

    相关文章

    PHP速学教程(入门到精通)
    PHP速学教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    php

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    Java编译相关教程合集
    Java编译相关教程合集

    本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

    9

    2026.01.21

    C++多线程相关合集
    C++多线程相关合集

    本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

    3

    2026.01.21

    无人机驾驶证报考 uom民用无人机综合管理平台官网
    无人机驾驶证报考 uom民用无人机综合管理平台官网

    无人机驾驶证(CAAC执照)报考需年满16周岁,初中以上学历,身体健康(矫正视力1.0以上,无严重疾病),且无犯罪记录。个人需通过民航局授权的训练机构报名,经理论(法规、原理)、模拟飞行、实操(GPS/姿态模式)及地面站训练后考试合格,通常15-25天拿证。

    16

    2026.01.21

    Python多线程合集
    Python多线程合集

    本专题整合了Python多线程相关教程,阅读专题下面的文章了解更多详细内容。

    1

    2026.01.21

    java多线程相关教程合集
    java多线程相关教程合集

    本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

    3

    2026.01.21

    windows激活码分享 windows一键激活教程指南
    windows激活码分享 windows一键激活教程指南

    Windows 10/11一键激活可以通过PowerShell脚本或KMS工具实现永久或长期激活。最推荐的简便方法是打开PowerShell(管理员),运行 irm https://get.activated.win | iex 脚本,按提示选择数字激活(选项1)。其他方法包括使用HEU KMS Activator工具进行智能激活。

    2

    2026.01.21

    excel表格操作技巧大全 表格制作excel教程
    excel表格操作技巧大全 表格制作excel教程

    Excel表格操作的核心技巧在于 熟练使用快捷键、数据处理函数及视图工具,如Ctrl+C/V(复制粘贴)、Alt+=(自动求和)、条件格式、数据验证及数据透视表。掌握这些可大幅提升数据分析与办公效率,实现快速录入、查找、筛选和汇总。

    6

    2026.01.21

    毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm
    毒蘑菇显卡测试网站入口 毒蘑菇测试官网volumeshader_bm

    毒蘑菇VOLUMESHADER_BM测试网站网址为https://toolwa.com/vsbm/,该平台基于WebGL技术通过渲染高复杂度三维分形图形评估设备图形处理能力,用户可通过拖动彩色物体观察画面流畅度判断GPU与CPU协同性能;测试兼容多种设备,但中低端手机易卡顿或崩溃,高端机型可能因发热降频影响表现,桌面端需启用独立显卡并使用支持WebGL的主流浏览器以确保准确结果

    19

    2026.01.21

    github中文官网入口 github中文版官网网页进入
    github中文官网入口 github中文版官网网页进入

    github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

    7

    2026.01.21

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    PHP课程
    PHP课程

    共137课时 | 9万人学习

    JavaScript ES5基础线上课程教学
    JavaScript ES5基础线上课程教学

    共6课时 | 9万人学习

    PHP新手语法线上课程教学
    PHP新手语法线上课程教学

    共13课时 | 0.9万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号