① php composer怎麼用
Composer很好的解決了PHP的包管理和依賴問題,只需要import一個文件,Composer中管理的所有庫就會按需載入,而不需要每個import。
先介紹一下Composer的安裝。Composer的官方地址: https://getcomposer.org/
安裝
curl -sS https://getcomposer.org/installer | php
這樣在當前目錄下會下載一個composer.phar的文件,為了方便,我們可以重命名一下,並放到/usr/local/bin下,方便執行。
mv composer.phar /usr/local/bin/composer
使用
一般我習慣把Composer放在/opt下,所以先創建一個Composer的目錄
mkdir /opt/composer
先下載一個KLogger,一個寫日誌的庫,本人比較喜歡。
cd /opt/composer
composer require katzgrau/klogger:dev-master
這樣,KLogger就被下載下來了,使用很簡單,只需要引入一個文件。
<?php
require '/opt/composer/vendor/autoload.php';
$logger = new Katzgrau\KLogger\Logger(__DIR__.'/logs');
...
KLogger可以使用了,我們在下載一個別的庫,Medoo:一個輕量級的資料庫框架。同樣的方式來下載。
cd /opt/composer
composer require catfan/Medoo
使用同理
<?php
require '/opt/composer/vendor/autoload.php';
$medoo = new medoo();
//繼續使用KLogger
$logger = new Katzgrau\KLogger\Logger(__DIR__.'/logs');
...
使用很簡單,只要引入了 vendor/autoload.php ,就可以自動引入用到庫,的確很酷。
加速
如果發現composer執行起來很慢,可以考慮換個鏡像。這里推薦一個日本的鏡像: http://composer-proxy.jp/ 。
執行
composer config -g -e
編輯後
{
"config": {}
,
"repositories": [
{ "packagist": false },
{
"type": "composer",
"url": "http://composer-proxy.jp/proxy/packagist"
}
]
}
如果發現composer長時間沒反應,可以在執行時候加入 -vvv 選項,可以輸出更多信息,方便查找問題。
composer -vvv require ...
最後
PHP的 spl_autoload_register 可以很方便做按需引入,當 new 一個類沒發現的時候,就會觸發,然後我們自己按照規則來處理引入。
一個簡單的例子
<?php
class ClassAutoloader
{
public function __construct()
{
spl_autoload_register(array($this, 'loader'));
}
public function loader($className)
{
$file = dirname(__FILE__) . '/' . $className . '.php';
if (is_file($file)) {
require $file;
}
}
}
$autoloader = new ClassAutoloader();
② PHP的include引用上級文件問題。
這不是引入的問題,你定義的類,類外的值是不會進來的,想要實現你這個功能Medoo.Min.php要這樣:
<?php
include '../config.php';
class medoo{
function __construct( $server, $username, $password ){
$this->server = $server;
$this->username = $username;
$this->password = $password;
}
//如果要在類里使用就這樣調用:
$this->server;
}
//使用時這樣用
$medoo = new medoo($server, $username, $password);
$server = $medoo->server;
③ php fatal error: call to undefined method medoo:
PHP的致命錯誤:調用未定義的方法$engine:: enterGame()
說明在$engine這個對象中沒有enterGame()這個方法函數
追問:
那應該怎麼辦呀?可以具體些么
追答:
就你這點代碼,無法分析!
只是給你一個比方:
比如有這么一個php類:
1
2
3
4
5
6
7
8
9
<?php
class a{
function b(){
echo '您好';
}
}
?>
接著來實例化這個類並調用這個類中的一個方法函數 b
1
2
3
4
5
<?php
$a = new a;//這里就實力化了上面的類 a,並把這個對象賦值給變數$a
$a -> b();//這里就是調用了類對象中的b方法函數,這里是運行正常的
$a -> c();//這里和上面的一樣,也是調用了類對象中的方法函數,但這里就會出現你所出現的錯誤,因為,類對象中壓根就沒有c這個方法函數
?>
④ 有沒有好用的開源的php mysql class,相仿medoo
好用不好用有一定主觀性,最起碼你得有一定要求,我個人使用github上的sparrow。
⑤ 有沒有好用的開源的php mysql class,類似medoo
medoo怎麼沒有orderby和limit
⑥ php的medoo的select中的排序,怎麼才能設置DESC
top並不是所有資料庫都支持的
select * from user order by id desc limit 1
limit 是對取的條數進行限制,如果只按順序取10條就limit 10,類似
⑦ medoo應用在哪個php框架
medoo只是一個單純的php操作資料庫的類庫,支持多種資料庫,依賴PDO
覺得哪個框架的關於資料庫類庫不好用,可以用這個替換~
⑧ 如何在PHP應用中防止SQL注入
對提交過來的數據進行過濾,一般是過濾%、*、空格、雙引號、單引號等。
或者使用護衛神. 入侵防護系統來過濾,程序裡面就無需考慮了。
⑨ 使用medoo會和別的php框架沖突嗎
用框架能造房子,用類只能造個門。 簡單的說,框架提供了快速搭建網站需要的全部組件。而類可能只是其中的一個組件
⑩ php爬蟲框架哪個好用
Beanbun使用的是workman和guzzle,資料庫使用的是medoo,支持分布式部署,可以使用內存(估計是workman自帶的容器)和redis做隊列,可以方便靈活的製作插件,擴展性強。
Beanbag安裝方便,可以使用composer進行安裝:
$composerrequirekiddyu/beanbun