❶ 學會了c語言都可以做什麼呢
C語言是一門通用性的語言,並沒有針對某個領域進行優化,在實際項目中,C語言主要用於較底層的開發,例如:
Windows、Linux、Unix 等操作系統的內核90%以上都使用C語言開發;
開發硬體驅動,讓硬體和操作系統連接起來,這樣用戶才能使用硬體、程序員才能控制硬體;
單片機和嵌入式屬於軟硬體的結合,有很多使用C語言的地方;
開發系統組件或服務,用於支撐上層應用;
編寫PHP擴展,增強PHP的功能;
如果對軟體某個模塊(例如演算法和搜索部分)的效率要求較高,也可以使用C語言來開發。
❷ php怎樣和c語言混合編程
php是一個腳本語言,如果需要系統調用,需要用C語言編寫一個擴展來實現,另外C是靜態編譯的,執行效率比PHP代碼高很多。同樣的運算代碼,使用C來開發,性能會比PHP要提升數百倍。編寫好的php擴展要在編譯php源碼時加進去。
❸ 如何看待C語言開發PHP框架
用C開發的框架目前還是比較少的,比較突出的就是由laurence開發的YAF,以及Phalcon,不少技術員會 CIT已經介紹了不少的開發框架,CodeIgniter、ZendFramework、CakePHP、FuelPHP、Phalcon,其中有的採用PHP語言開發,有的則是採用C語言編寫完成。 用C開發的框架目前還是比較少的,比較突出的就是由laurence開發的YAF,以及Phalcon,不少技術員會問,C語言開發的PHP框架會成為一種趨勢么,本篇就來簡單的分析介紹下。 為何使用框架 使用框架主要是在團隊協作開發過程中統一開發規范、程序設計模式,遵循開發框架的各種約定,無論在編碼還是以後的維護過程中都是易於管理的。另外就是框架會集成豐富的類庫、函數庫,也避免你的重復勞動,可以「隨地取材」,提升開發的效率。 作為新人,我們是不提倡學習框架的,盡量還是從PHP本身先學起,例如很多框架中都提供了ORM、CURD這類東西,但剛剛接觸PHP的同學連PHP+MySQL都沒有搞太清楚,直接選擇框架式不可取的。 另外一些簡單的應用也不必選擇框架,例如一些小的工具或者功能,本身編寫就不是很復雜,選擇一套框架反而讓你的程序變得臃腫。 個人開發的時候也是根據情況而定,如果一些程序員本身就有一套開發思路,也無需選擇框架,畢竟要熟悉框架也是需要時間成本的。 綜上所述,我們得知選擇框架是有范圍的,只有合適的時候才需要去選擇開發框架。 易配置、易部署; 庫、函數; 文檔; 豐富的應用; 成熟的社區; 性能; 不同層次的技術員選擇框架所看重的點也是不一樣的,如果是初學者,主要是看重1、3、5,中級的技術員則看重2、4,如果是高級別的技術員會更加看重6,所以不同階段會選擇不同的開發框架。當然,成熟的開發框架應該能夠包羅方方面面,但能夠做到這些是不可能的。 C語言框架是趨勢么? 我想隨著Ruby on Rails這些的發展,讓很多web工作者感受到了快樂,PHP中集成開發框架也不是不可能的事情,這不是YAF、Phalcon已經在做這些事情了么,但C語言的開發框架能做的事情是有限的,它可能會作為開發模式的一種規范,但絕不會是框架的全部,因為如果整個框架純採用C語言,那就不能很好的利用PHP社區。
❹ 如何用C語言編寫PHP擴展的詳解
1:預定義
在home目錄,也可以其他任意目錄,寫一個文件,例如caleng_mole.def
內容是你希望定義的函數名以及參數:
int a(int x,int y)
string b(string str,int n)
2:到php源碼目錄的ext目錄
#cd /usr/local/php-5.4.0/ext/
執行命令,生成對應擴展目錄
#./ext_skel --extname=caleng_mole --proto=/home/hm/caleng_mole.def
3:修改config.m4
去掉dnl的注釋
PHP_ARG_ENABLE(caleng_mole, whether to enable caleng_mole support,
Make sure that the comment is aligned:
[ --enable-caleng_mole Enable caleng_mole support])
4:修改caleng_mole.c
代碼如下:
/* {{{ proto int a(int x, int y)
*/
PHP_FUNCTION(a)
{
int argc = ZEND_NUM_ARGS();
int x;
int y;
int z;
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
return;
z=x+y;
RETURN_LONG(z);
}
/* }}} */
/* {{{ proto string b(string str, int n)
*/
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;
if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '