從零開始打造自己的PHP框架 第5章

2021-09-14 04:27:36 字數 3731 閱讀 7932

使用medoo外掛程式來連線和運算元據庫。

1、在composer中新增依賴:

"catfan/medoo": "*"
2、更新依賴

composer update

1、config目錄新增medoo_config.php為:

<?php 

return array(

'database_type' => 'mysql',

'database_name' => 'vkphp',

'server' => 'localhost',

'username' => 'root',

'password' => '',

'charset' => 'utf8',

'port' => 3306,// 可選引數

'prefix' => 'vk_',// 可選,定義表的字首

);

2、core目錄新增medoo.php為:

<?php 

namespace core;

class medoo extends \medoo\medoo

}

public function medoo()
訪問 ,即可看到medoo的相關資訊。

因為medoo的版本問題(1.4.5),此時並沒有列印出這條記錄的id,而是pdostatement object。此時,要想獲取記錄id,有兩個方案:

方案一:從medoo中獲取

dump($medoo->id());
方案二:找到vender/catfan/medoo/src/medoo.php的第1173行,修改為

$this->exec('insert into ' . $this->tablequote($table) . ' (' . implode(', ', $fields) . ') values ' . implode(', ', $stack), $map);

return $this->pdo->lastinsertid();

$ret = $medoo->delete('user',['username'=>'voidking2']);

dump($ret->rowcount()); // 受影響的行數

$ret = $medoo->update('user',['username'=>'voidking2'],['username'=>'voidking1']);

dump($ret->rowcount());

yii框架,對於每個表,我們都要建立乙個model類,繼承activerecord類。比如:

<?php 

use yii\db\activerecord;

// project.php

class project extends activerecord

public function gettenproject()

}

在使用的時候,新建乙個model物件,呼叫其中的方法即可:

$project = new project();
thinkphp框架,對於每個表,我們不用建立model類。在使用的時候,直接新建乙個預設model物件,傳入表名,呼叫其中的方法即可:

$project = m('project');
當然,thinkphp也可以自定義model類,繼承model類。比如:

<?php 

// projectmodel.class.php

class projectmodel extends model

}

使用d方法新建自定義model物件,找不到定義類的情況下會呼叫m方法:

$project = d('project');
yii和thinkphp的兩種實現方案,異曲同工,同樣都包含了預設model類和自定義model類。

yii中,預設model類為activerecord,如果要自定義model類,繼承它即可。

thinkphp中,預設model類為model,如果要自定義model類,繼承它即可。

鑑於yii的實現方式,我們也來新建乙個model基類,其他的model類都繼承它。

1、core目錄下,新建model.php,內容如下:

<?php 

namespace core;

class model extends \core\medoo

public function list_all()

public function find_by_id($id)

public function find_by_condition($condition)

public function add($data)

public function del($condition)

public function edit($data,$condition)

}

<?php 

class user extends \core\model

}

dump($user->list_all());

dump($user->find_by_id(1));

dump($user->find_by_condition(['username'=>'voidking']));

dump($user->add(['username'=>'voidking1','password'=>'voidking1']));

dump($user->edit(['username'=>'voidking2'],['username'=>'voidking1']));

dump($user->del(['username'=>'voidking2']));

訪問 ,可以看到操作結果:

操作完成後,也許會感覺資料庫表比較亂。這時可以清空表,並且重新從1開始自增id。

truncate vk_user;

至此,整個框架已經基本完成。接下來,我們會開發乙個迷你專案,在開發的過程中,測試並改進我們的框架。

從零開始打造自己的php框架

medoo官方文件

medoo中文文件

從零開始打造自己的php框架

為了更快的開發效率 為了更高的執行效率 為了更好地證明自己 裝x 能夠熟練地使用使用php 較為深刻的理解物件導向和mvc概念 較強的邏輯能力和動手能力 目的 通過位址列的引數來找到對應的控制器和方法 本質 隱藏index.php 獲取url 引數部分 返回對應的控制器和方法 url多餘部分轉換成 ...

從零開始打造自己的框架 類的自動載入

接下來我們希望完成乙個 自動載入類 的動能,我們把這個功能放到imooc這個基礎類當中。core imooc.php namespace core class imooc 自動載入的功能 static public function load class elseelse 上面 中,load 方法的...

php從零開始

吐槽 今天開始擼php了,從此前端少了個小白,php多了個小白。本白從3年前陸陸續續開始一會兒擼會兒php一會兒擼前端。前端擼的比較多,php擼的比較少,當然本白擼php大多都是被逼的 然後反正不準備換工作了,那麼工作閒的蛋疼,那麼開始重新系統的開始學一下php。然後麼,我和我的女友分分合合的樣子。...