php公共函數庫,php算法庫

本文目錄一覽:

9個必須知道的實用PHP函數和功能

即使使用 PHP 多年 也會偶然發現一些未曾了解的函數和功能 其中有些是非常有用的 但沒有得到充分利用 並不是所有人都會從頭到尾一頁一頁地閱讀手冊和函數參考!

任意參數數目的函數

你可能已經知道 PHP 允許定義可選參數的函數 但也有完全允許任意數目的函數參數的方法 以下是可選參數的例子

以下為引用的內容

// function with optional arguments function foo($arg = $arg = ) {

echo “arg : $arg n”;  echo “arg : $arg n”;

}

foo( hello world ); /* prints: arg : hello arg : world */

foo(); /* prints: arg : arg : */

現在讓我們看看如何建立能夠接受任何參數數目的函數 這一次需要使用 func_get_args() 函數

以下為引用的內容

// yes the argument list can be empty function foo() {

// returns an array of all passed arguments  $args = func_get_args();

foreach ($args as $k = $v) {   echo “arg” ($k+ ) “: $vn”;  }

}

foo(); /* prints nothing */

foo( hello ); /* prints arg : hello */

foo( hello world again ); /* prints arg : hello arg : world arg : again */

使用 Glob() 查找文件

許多 PHP 函數具有長描述性的名稱 然而可能會很難說出 glob() 函數能做的事情 除非你已經通過多次使用並熟悉了它 可以把它看作是比 scandir() 函數更強大的版本 可以按照某種模式搜索文件

以下為引用的內容

// get all php files $files = glob( * php );

print_r($files); /* output looks like: Array (     [ ] = phptest php     [ ] = pi php     [ ] = post_output php     [ ] = test php ) */

你可以像這樣獲得多個文件

以下為引用的內容

// get all php files AND txt files $files = glob( * {php txt} GLOB_BRACE);

lishixinzhi/Article/program/PHP/201311/21182

php中如何建立函數庫

Step 1 =

php的擴展模塊都放在 ext/ 目錄下,比如說 snmp模塊、mysql模塊。 我們要建立自己的模塊,就要在ext目錄下為自己的模塊建一個目錄。比如,我們要做一個分析config文件的模塊,命名為pconfig模塊(parse config的簡寫),需在ext下建立目錄pconfig。將我寫好的7個文件copy到該目錄下,另外需對主目錄下的configure和internal_functions.c作一些修改。

Step 2 =

Makefile.am Makefile.in

是模板文件,用戶執行configure時,會調用這兩個文件,生成編譯時所用的Makefile文件。修改時將小寫的pconfig換成你自己的模塊名,別忘了把大寫的PCONFIG也替換掉(不要告訴我你不會vi的替換語句)。config.m4也是執行configure將會調用的檢測腳本程序,以後我們來討論這些腳本程序的更深入的修改。現在你只需要把pconfig該成你的模塊就可以了。對config.h.stub和setup.stub也如法炮製。其實setup.stub也沒什麼用。

Step 3 =

php3-pconfig.h 頭文件中

extern php3_module_entry pconfig_module_entry;

#define pconfig_module_ptr pconfig_module_entry

#define phpext_pconfig_ptr pconfig_module_ptr

這幾行定義了模塊的入口,將入口註冊到php後,php會通過模塊入口找到你寫的函數

 

下面幾個函數定義是用宏進行定義的,展開以後其實就是 php3_minit_pconfig , php3_rinit_pconfig ……分別在你的模塊初試化或結束時被調用,如果你的模塊很簡單,也就不需要這些定義了

 

extern PHP_MINIT_FUNCTION(pconfig);

extern PHP_RINIT_FUNCTION(pconfig);

extern PHP_MSHUTDOWN_FUNCTION(pconfig);

PHP_MINFO_FUNCTION(pconfig);

 

這是你的函數聲明,將來寫在php腳本語句中的函數名就是在PHP_FUNCTION中定義的名字。

PHP_FUNCTION(pconfig_test);

如果有多個,還可以繼續往下加

PHP_FUNCTION(pconfig_parsefile);

PHP_FUNCTION(pconfig_release); …….

 

Step 4 =

接下來我們看最重點的C代碼了

function_entry pconfig_functions[] = {

PHP_FE(pconfig_test, NULL)

{NULL, NULL, NULL}

};

定義的是你的函數的入口(前面我們提到過模塊的入口),按照格式將你在頭文件中定義的函數寫進去吧。注意,這是用宏定義的,不要管語法是否正確。以後我們具體討論這些宏的用法。

php3_module_entry pconfig_module_entry = {

“pconfig”, pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES

};

註冊模塊的入口信息,比如模塊名,函數接口,初試化模塊將調用的函數等等,如果你的模塊不執行複雜操作的話,可以忽略掉他們,寫成

php3_module_entry pconfig_module_entry = {

“pconfig”, pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES

};

Step 5 =

寫你自己的函數

在頭文件和function_entry處,我們已經定義了自己的函數pconfig_test,現在我們就來實現pconfig_test的功能。就比如執行兩個數相加的和吧。

static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)

{ ……

}

PHP_FUNCTION(pconfig_test)

{

_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);

}

當系統調用pconfig_test時,會調用你的_php3_pconfig_test函數,當然你也可以把_php3_pconfig_test里的內容直接寫在PHP_FUNCTION(pconfig_test)中,這樣做只是程序結構比較清晰。注意:不要將_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展開後實際上就是php3_pconfig_test!

Step 6 =

好了,現在我們開始修改configure,在echo $ac_n “checking for MySQL support””… $ac_c” 16的前面(當然,如果你熟悉configure的話,可以加在任何合適的地方)加上下面幾句話

if test “${with_pconfig+set}” = set; then

withval=”$with_pconfig”

# Add your lib in here

EXTRA_LIBS=”$EXTRA_LIBS”

# Add your include path in here

INCLUDES=”$INCLUDES”

EXT_SUBDIRS=”$EXT_SUBDIRS pconfig”

EXT_LIBS=”$EXT_LIBS pconfig/libphpext_pconfig.a”

EXTINFO_DEPS=”$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub”

EXT_STATIC=”$EXT_STATIC pconfig”

fi

修改internal_functions.c,在頭文件定義中加入#include “ext/pconfig/php3_pconfig.h”

在zend_module_entry數組中加入phpext_pconfig_ptr,

 

Step 7 =

從新configure,帶上需要的參數,不要忘記的是在參數里加入 –with-pconfig

 

Step 8 =

index.php3

? echo pconfig_test(123,678).”

“; ?

執行%php index.php3

810

怎麼調用Common.php裏面的公共函數

據個人理解,如何調用要看你這個public 函數是怎麼定義的,如果是定義的某個類的成員函數,你先要 include / require 引入類所在的單元文件,實例化該類,再調用這個函數就可以了。

如何自定義公共函數以及存放位置

註:本條為本人添加。公共函數位於 system/core/Common.php 文件中,大家可以在這裡定義自己的公共函數。

CodeIgniter 使用了一些全局定義的函數來完成操作,在任何情況下你都能夠使用這些函數。使用他們不需要載入任何類庫或輔助函數。

is_php(‘version_number’)

is_php() 判斷正在使用的PHP的版本號是否高於你所提供的 version_number 。

if (is_php(‘5.3.0’))

{

$str = quoted_printable_encode($str);

}

如果已安裝的PHP版本號等於或高於你所提供的版本號,本函數將返回布爾值 TRUE。如果安裝的PHP版本號低於你所提供的那個版本號,本函數將返回 FALSE。

is_really_writable(‘path/to/file’)

在Windows平台,is_writable()函數在實際沒有文件寫權限時也返回真。那是因為,只有文件有隻讀屬性時,操作系統才向PHP報告為假。這個函數依靠對文件的先行寫入來判斷是否真的具有寫權限。 通常情況下,只有在這個信息不可靠的平台上才推薦使用。

注:此函數也可用於判斷文件夾是否有可寫權限。

if (is_really_writable(‘file.txt’))

{

echo “I could write to this if I wanted to”;

}

else

{

echo “File is not writable”;

}

config_item(‘item_key’)

儘管使用config_item()函數能夠取得單個配置信息,但是配置類是訪問這些信息的優選方式。更多信息請見類庫參考。

注:此函數獲取的是從config文件直接獲取的值,無法取得配置類 set_item() 函數變更後的值。

show_error(‘message’), show_404(‘page’), log_message(‘level’, ‘message’)

這些函數在錯誤處理中描述。

set_status_header(code, ‘text’);

允許你手動設置服務器狀態頭(header)。例如:

set_status_header(401);

// 將header設置為: Unauthorized

單擊這裡 查看全部的header列表。

remove_invisible_characters($str)

這個函數能防止在ASCII字符之間插入空字符,如Java\0script.

html_escape($mixed)

利用此功能可以方便的使用htmlspecialchars()函數。它接受字符串和數組。有助於防止跨站腳本攻擊(XSS)。

thinkphp3.2公共函數寫在哪

如果你想整站都可以調用,那你就寫在thinkphp框架下的common/functions.php文件最後,如果你只想在前台調用,那你就先創建前台目錄,在前台目錄里下的common創建一個function.php文件,把公共函數寫在裏面既可。

thinkphp common公共函數 命名

加載common.php的代碼在框架中ThinkPHP/Lib/Core/Thinkphp.class.php文件是固定的。

……

// 加載項目公共文件

if(is_file(COMMON_PATH.’common.php’)) {

include COMMON_PATH.’common.php’;

// 編譯文件

if(!APP_DEBUG) $compile .= compile(COMMON_PATH.’common.php’);

}

……..

但是Thinkphp提供了,LOAD_EXT_FILE配置文件參數,可以在項目配置文件中定義LOAD_EXT_FILE參數,

例如:

“LOAD_EXT_FILE”=”user,db”

其次在項目Common目錄中新建user.php與db.php文件.

通過上面的設置,就會執行過程中自動載入項目公共目錄下面的擴展函數庫文件user.php和db.php,這樣就可以直接在項目中調用擴展函數庫user.php和db.php中的函數了,而且擴展函數庫的函數修改是實時生效的。

手動載入

如果你的函數只是個別模塊偶爾使用,則不需要採用自動加載方式,可以在需要調用的時候採用load方法手動載入,方式如下:

load(“@.user”)

@.user表示加載當前項目的user函數文件,這樣就可以直接user.php擴展函數庫中的函數了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/259372.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 16:28
下一篇 2024-12-15 16:28

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • 粒子群算法Python的介紹和實現

    本文將介紹粒子群算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群算法的原理 粒子群算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29

發表回復

登錄後才能評論