phpreadline
❶ php常用擴展有哪些
php基本使用到的擴展有如下:
bcmath(精確數值處理)
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
gettext
hash
iconv
igbinaryinotify 文件監控
json
libxml
mbstring
mhash
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis Redis緩存
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshmswoole 通信引擎
tokenizer
wddx
xml
xmlreader
xmlwriter
xslyaf YAF框架必須
zip
zlib
其中最常用的擴展有:curl date json mysql mysqli openssl pdo_mysql redis session zip等
查看當前php安裝了哪些擴展,可以使用命令:php -m
❷ 如何使用PHP的互動式運行環境
從PHP 5.1.0開始,CLI SAPI提供了一個互動式命令行工具(Interactive shell),這個互動式PHP shell是通過使用 –with-readline 編譯選項集成到php內核里的。使用這個互動式shell,你可以直接在命令行窗口裡輸入PHP並直接獲得輸出結果。
開啟PHP的互動式shell模式,需要使用 -a 參數。下面是使用互動式shell的一些例子。
$ php -a
Interactive shell
php > echo 5+8;
13
php > function addTwo($n)
php > {
php { return $n + 2;
php { }
php > var_mp(addtwo(2));
int(4)
php >
在互動式shell里,你可以使用 tab 鍵對函數名,內置變數,類名,靜態方法等進行自動補全操作。
需要注意的是,Interactive Shell 和 Interactive Mode 並不是一個東西,盡管名稱和功能都很相似。
如果你輸入 php -a ,得到的回應是 『Interactive Shell』 並跟隨著 『php>』 提示符,那你使用的就是互動式shell。如果你得到的回應是 『Interactive mode enabled』 ,說明你的PHP並不支持互動式shell,上面介紹的用法也不實用於你。
但也不用擔心,Interactive mode(交互模式)也可以在命令行窗口裡執行PHP代碼,只是代碼的執行方式有些區別。在PHP交互模式(Interactive mode)里,你在命令行窗口裡輸入PHP代碼,代碼不會立即執行,當你輸入了所有PHP代碼後,輸入 Ctrl-Z (windows里),或輸入 Ctrl-D (linux里),你輸入的所有代碼將會一次執行完成並輸出結果。
在PHP交互模式(Interactive mode)里,跟互動式shell里不一樣,你的代碼需要以 <?php 開頭,跟你的普通PHP文件里的寫法一致。下面是在Windows里的使用例子。
C:\>php -a
Interactive mode enabled
<?php
echo "Hello, world!";
?>
^Z
Hello, world!
在Winidows里,沒有互動式shell,只有Interactive mode。
❸ php計算n要求n為鍵盤輸入的數字
您好,您想要通過 PHP 計算用戶輸入的數字嗎?這是可以做到的,下面清伍巧是一個簡單的例子:
// 讀取用戶在鍵答鍵盤輸入的數字
$n = readline("請輸入一個數字:");
// 計算並輸出結果
echo "您輸入的數字是:" . $n . "\n";
在這個例子中,我們通過 readline 函數來讀取用戶在鍵盤橘碰輸入的數字,然後通過 echo 輸出結果。
希望這對您有幫助。
❹ PHP的擴展中回調PHP的函數有多參數的問題
寫PHP擴展最好的參考資料是官方代碼庫,即便不算best practice,也不至於太差。先下載一份php源碼,然後在ext目錄里搜 call_user_function,把參數個數>=2的列出來。比如 ext/readline/readline.cstatic char **_readline_completion_cb(const char *text, int start, int end)
{
zval params[3];
int i;
char **matches = NULL;
_readline_string_zval(¶ms[0], text);
_readline_long_zval(¶ms[1], start);
_readline_long_zval(¶ms[2], end);
if (call_user_function(CG(function_table), NULL, &_readline_completion, &_readline_array, 3, params) == SUCCESS) {
if (Z_TYPE(_readline_array) == IS_ARRAY) {
if (zend_hash_num_elements(Z_ARRVAL(_readline_array))) {
matches = rl_completion_matches(text,_readline_command_generator);
} else {
matches = malloc(sizeof(char *) * 2);
if (!matches) {
return NULL;
}
matches[0] = strp("");
matches[1] = '\0';
}
}
}
for (i = 0; i < 3; i++) {
zval_ptr_dtor(¶ms[i]);
}
zval_ptr_dtor(&_readline_array);
return matches;
}
看一下call_user_function的簽名,它參數是個數組,zval params[]ZEND_API int _call_user_function_ex(zval *object, zval *function_name, zval *retval_ptr, uint32_t param_count, zval params[], int no_separation);
#define call_user_function(function_table, object, function_name, retval_ptr, param_count, params) \
_call_user_function_ex(object, function_name, retval_ptr, param_count, params, 1)
#define call_user_function_ex(function_table, object, function_name, retval_ptr, param_count, params, no_separation, symbol_table) \
_call_user_function_ex(object, function_name, retval_ptr, param_count, params, no_separation)