目錄
本節所解的內容
前言
文件的引用
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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

See all articles