目錄
本節所解的內容
前言
文件的引用
include和include_once
require和require_once
文件引入機制
引入檔案的return問題
常量
魔术常量
引入文件和魔术常量的最佳示例
函数的结尾
操作变量的函数
PHP输出语句
echo
print
print_r
printf
var_dump
总结
首頁 後端開發 php教程 PHP基礎教學六之函數、常數

PHP基礎教學六之函數、常數

Mar 01, 2017 am 09:40 AM

本節所解的內容

  • include和include_once

  • require與require_once

  • 常數

  • 引入檔案與常數結合案例列

  • 變數運算函數

  • 輸出語句

前言

在上篇文章中,我們討論了函數的應用,但是只是在一個文件中進行函數的調用,當我們想在不同的文件中進行函數的調用時,上節的內容就不能夠實現,但是PHP語言提供了引入的概念。讓這個問題得到了完美的解決。

文件的引用

如果某個文件,例如a.php 文件,要使用b.php 文件的函數,這是就需要我們把b文件中的函數引入到a檔案中。 PHP位元我們提供了四種方式來達到目的, 分別是 include , include_once, require , require_once 。

雖然總共有四種方式,但是每個的引入方式不一樣。

include和include_once

從名字可以看到,這兩個引入都有include,他們兩個共同的特點就是當引入的檔案出錯的時候(因為你不能保證每個引入的文件都是正確的)不會終止程序,而是會接著執行下去的。

<?php
    include &#39;a.php&#39;;

    echo &#39;上面引入的文件出错了&#39;;
登入後複製

結果:
PHP基礎教學六之函數、常數

include

include,一種引入檔案的形式,它有兩個特點:

  1. 當include引入的檔案出錯的時候,程式不會立即停止,它會一直執行下去。

  2. 如果文件已經引入了,它會重複的引入,

#第一個特點上面已經論述過,第二個特點,當在程式碼中重複的使用include引入同一個文件,它會重複的引入。

<?php

/**
 * a.php文件的内容,一个求和的函数
 */
function sum($a,$b){
    return $a + $b;
}

//func.php文件的内容
<?php
    include &#39;a.php&#39;;
    include &#39;a.php&#39;;
    echo &#39;重复的引入文件&#39;;
登入後複製

結果:
PHP基礎教學六之函數、常數

在上面可以看到在此時用include它會報錯,意思是說你之前已經引入了文件,不能再次引入。

include_once

include_once它和include很像,除了引入出錯會繼續執行外,還有一個是當檔案已經引入後,它不會再次引入。

<?php
    include_once &#39;a.php&#39;;
    include_once &#39;a.php&#39;;
    echo &#39;引入一次文件。&#39;;
.....结果......
引入一次文件。
登入後複製

可以看到上面的程式碼並沒有報錯。

require和require_once

require和require_once是另一個檔案引進的方式。他們共有的特點是:

當引入的文件出錯的時候,就會終止程序,不在向下執行。

<?php
    require &#39;b.php&#39;;
    echo &#39;这句话不会执行&#39;;
登入後複製

結果:
PHP基礎教學六之函數、常數

require

#require,一種引入檔案的形式,它有兩個特點:

  1. 當require引入的檔案出錯的時候,程式會立即停止。

  2. 如果文件已經引入了,它會重複的引入,

#第一個特點上面已經論述過,第二個特點,當在程式碼中重複的使用require引入同一個文件,它會重複的引入。

<?php

/**
 * a.php文件的内容,一个求和的函数
 */
function sum($a,$b){
    return $a + $b;
}

//func.php文件的内容
<?php
    require &#39;a.php&#39;;
    require &#39;a.php&#39;;
    echo &#39;引入一次文件。&#39;;
登入後複製

結果:
PHP基礎教學六之函數、常數

在上面可以看到在此時用require它會報錯,意思是說你之前已經引入了文件,不能再次引入。

require_once

require_once它和require很像,除了引入出錯會終止程式外,還有一個是當檔案已經引入後,它不會再次引入。

<?php
    require_once &#39;a.php&#39;;
    require_once &#39;a.php&#39;;
    echo &#39;引入一次文件。&#39;;
.....结果......
引入一次文件。
登入後複製

可以看到上面的程式碼並沒有報錯。


系統為我們提供了四種方式,但我們怎麼知道選擇什麼樣的引入方式呢?

如果我們在引入某些文件(例如獲取資料庫連接,打開文件等。建議使用_once這種方式來引入文件),防止資源浪費。而我們在開發中經常使用require和require_once這種方式。

比較推薦使用require_once這種方式。因為使用這種方式可以節省資源,同時可以避免重複定義出現的錯誤。

文件引入機制

文件引入的深入了解:在PHP中當在一個文件中引入另外一個文件的時候,就會去執行引入的文件,我們在引入的文件中可以傳回一個值,也可以不返回,直到文件結束。

<?php

    echo &#39;这是引入的文件<br>&#39;;
    require_once &#39;b.php&#39;; //引入b文件
    echo &#39;当执行完引入的文件后执行这句话<br>&#39;;
b.php文件
<?php
    echo &#39;这是另外一个文件<br>&#39;;
    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 关键字在类定义之外定义常量。

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

<?php
    define(&#39;PI&#39;,3.1415926);
    echo PI . &#39;<br>&#39;;
    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 新增)。

示例:

<?php
    define(&#39;PI&#39;,3.1415926);
    echo PI . &#39;<br>&#39;;
    const TAX = 0.012;
    echo TAX . &#39;<br>&#39;;

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

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

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


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

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

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

PHP基礎教學六之函數、常數

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

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

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

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

function.php:

<?php

    function getSum($a,$b){ //计算两个数的和
        return $a + $b;
    }

    function getSub($a,$b){ //计算两个数的差
        return $a - $b;
    }
登入後複製

init.php

<?php

    //定义项目的根目录
    define(&#39;WEB_ROOT_PATH&#39;,dirname(__DIR__) . &#39;/&#39;);

    //定义css的路径
    define("CSS_PATH",WEB_ROOT_PATH . &#39;css/&#39;);

    //定义js的路径
    define(&#39;JS_PATH&#39;,WEB_ROOT_PATH . &#39;js/&#39;);

    //定义图片的路径
    define(&#39;IMAGE_PATH&#39;,WEB_ROOT_PATH . &#39;image/&#39;);

    //定义存放模板的路径
    define(&#39;TEMPLATE_PATH&#39;,WEB_ROOT_PATH . &#39;template/&#39;);

    //定义lib的路径
    define(&#39;LIB_PATH&#39;,WEB_ROOT_PATH . &#39;lib/&#39;);

    //定义model的路径
    define(&#39;MODEL_PATH&#39;,WEB_ROOT_PATH . &#39;model/&#39;);


    //我们使用lib的绝对路径来引入function.php文件
    require LIB_PATH . &#39;function.php&#39;;
登入後複製

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

index.php

<?php
    require_once &#39;./lib/init.php&#39;; //这里通过相对路径来获取初始化文件

    //上面的表示已经引入了初始化文件,而我们在初始化中又引入了函数文件,所以可以在这里直接用函数文件里面的函数。

    $sum = getSum(10,23);
    $sub = getSub(10,5);
    echo $sum;
    echo &#39;<br>&#39;;
    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)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles