封装自己的DB类(PHP),封装db类php
封装自己的DB类(PHP),封装db类php
封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现。这样有了自己的DB类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便!
1.封装一个DB类。一个类文件应该只有一个类,其他的内容全部都没有。类文件的命名规则:类名.class.php
下面是创建DB类的代码:
<?<span>php </span><span>//</span><span>封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现</span> <span>class</span><span> DB{ </span><span>//</span><span>属性</span> <span>private</span> <span>$host</span><span>; </span><span>private</span> <span>$port</span><span>; </span><span>private</span> <span>$user</span><span>; </span><span>private</span> <span>$pass</span><span>; </span><span>private</span> <span>$dbname</span><span>; </span><span>private</span> <span>$charset</span><span>; </span><span>private</span> <span>$prefix</span>; <span>//</span><span>表前缀</span> <span>private</span> <span>$link</span>; <span>//</span><span>连接资源(连接数据库,一般会返回一个资源,所以需要定义一个link属性) //构造方法(作用:为了初始化对象的属性),会被自动调用</span> <span>/*</span><span> * @param1 array $arr,默认为空,里面是一个关联数组,里面有7个元素 * array('host' => 'localhost','port' => '3306'); </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>$arr</span> = <span>array</span><span>()){ </span><span>//</span><span>初始化</span> <span>$this</span>->host = <span>isset</span>(<span>$arr</span>['host']) ? <span>$arr</span>['host'] : 'localhost';<span>//</span><span>先判断是否有自己的host,如果有就用自己的host,否则就使用默认的localhost</span> <span>$this</span>->port = <span>isset</span>(<span>$arr</span>['port']) ? <span>$arr</span>['port'] : '3306'<span>; </span><span>$this</span>->user = <span>isset</span>(<span>$arr</span>['user']) ? <span>$arr</span>['user'] : 'root'<span>; </span><span>$this</span>->pass = <span>isset</span>(<span>$arr</span>['pass']) ? <span>$arr</span>['pass'] : 'root'<span>; </span><span>$this</span>->dbname = <span>isset</span>(<span>$arr</span>['dbname']) ? <span>$arr</span>['dbname'] : 'mydatabase'<span>; </span><span>$this</span>->charset = <span>isset</span>(<span>$arr</span>['charset']) ? <span>$arr</span>['charset'] : 'utf8'<span>; </span><span>$this</span>->prefix = <span>isset</span>(<span>$arr</span>['prefix']) ? <span>$arr</span>['prefix'] : ''<span>; </span><span>//</span><span>连接数据库(类是要操作数据库,因此要连接数据库)</span> <span>$this</span>-><span>connect(); </span><span>//</span><span>设置字符集</span> <span>$this</span>-><span>setCharset(); </span><span>//</span><span>选择数据库</span> <span>$this</span>-><span>setDbname(); } </span><span>/*</span><span> * 连接数据库 </span><span>*/</span> <span>private</span> <span>function</span><span> connect(){ </span><span>//</span><span>mysql扩展连接</span> <span>$this</span>->link = <span>mysql_connect</span>(<span>$this</span>->host . ':' . <span>$this</span>->port,<span>$this</span>->user,<span>$this</span>-><span>pass); </span><span>//</span><span>判断结果</span> <span>if</span>(!<span>$this</span>-><span>link){ </span><span>//</span><span>结果出错了 //暴力处理,如果是真实线上项目(生产环境)必须写入到日志文件</span> <span>echo</span> '数据库连接错误:<br/>'<span>; </span><span>echo</span> '错误编号' . <span>mysql_errno</span>() . '<br/>'<span>; </span><span>echo</span> '错误内容' . <span>mysql_error</span>() . '<br/>'<span>; </span><span>exit</span><span>; } } </span><span>/*</span><span> * 设置字符集 </span><span>*/</span> <span>private</span> <span>function</span><span> setCharset(){ </span><span>//</span><span>设置</span> <span>$this</span>->db_query("set names {<span>$this</span>->charset}"<span>); } </span><span>/*</span><span> * 选择数据库 </span><span>*/</span> <span>private</span> <span>function</span><span> setDbname(){ </span><span>$this</span>->db_query("use {<span>$this</span>->dbname}"<span>); } </span><span>/*</span><span> * 增加数据 * @param1 string $sql,要执行的插入语句 * @return boolean,成功返回是自动增长的ID,失败返回FALSE </span><span>*/</span> <span>public</span> <span>function</span> db_insert(<span>$sql</span><span>){ </span><span>//</span><span>发送数据</span> <span>$this</span>->db_query(<span>$sql</span><span>); </span><span>//</span><span>成功返回自增ID</span> <span>return</span> <span>mysql_affected_rows</span>() ? <span>mysql_insert_id</span>() : <span>FALSE</span><span>; } </span><span>/*</span><span> * 删除数据 * @param1 string $sql,要执行的删除语句 * @return Boolean,成功返回受影响的行数,失败返回FALSE </span><span>*/</span> <span>public</span> <span>function</span> db_delete(<span>$sql</span><span>){ </span><span>//</span><span>发送SQL</span> <span>$this</span>->db_query(<span>$sql</span><span>); </span><span>//</span><span>判断结果</span> <span>return</span> <span>mysql_affected_rows</span>() ? <span>mysql_affected_rows</span>() : <span>FALSE</span><span>; } </span><span>/*</span><span> * 更新数据 * @param1 string $sql,要执行的更新语句 * @return Boolean,成功返回受影响的行数,失败返回FALSE </span><span>*/</span> <span>public</span> <span>function</span> db_update(<span>$sql</span><span>){ </span><span>//</span><span>发送SQL</span> <span>$this</span>->db_query(<span>$sql</span><span>); </span><span>//</span><span>判断结果</span> <span>return</span> <span>mysql_affected_rows</span>() ? <span>mysql_affected_rows</span>() : <span>FALSE</span><span>; } </span><span>/*</span><span> * 查询:查询一条记录 * @param1 string $sql,要查询的SQL语句 * @return mixed,成功返回一个数组,失败返回FALSE </span><span>*/</span> <span>public</span> <span>function</span> db_getRow(<span>$sql</span><span>){ </span><span>//</span><span>发送SQL</span> <span>$res</span> = <span>$this</span>->db_query(<span>$sql</span><span>); </span><span>//</span><span>判断返回</span> <span>return</span> <span>mysql_num_rows</span>(<span>$res</span>) ? <span>mysql_fetch_assoc</span>(<span>$res</span>) : <span>FALSE</span><span>; } </span><span>/*</span><span> * 查询:查询多条记录 * @param1 string $sql,要查询的SQL语句 * @return mixed,成功返回一个二维数组,失败返回FALSE </span><span>*/</span> <span>public</span> <span>function</span> db_getAll(<span>$sql</span><span>){ </span><span>//</span><span>发送SQL</span> <span>$res</span> = <span>$this</span>->db_query(<span>$sql</span><span>); </span><span>//</span><span>判断返回</span> <span>if</span>(<span>mysql_num_rows</span>(<span>$res</span><span>)){ </span><span>//</span><span>循环遍历</span> <span>$list</span> = <span>array</span><span>(); </span><span>//</span><span>遍历</span> <span>while</span>(<span>$row</span> = <span>mysql_fetch_assoc</span>(<span>$res</span><span>)){ </span><span>$list</span>[] = <span>$row</span><span>; } </span><span>//</span><span>返回</span> <span>return</span> <span>$list</span><span>; } </span><span>//</span><span>返回FALSE</span> <span>return</span> <span>FALSE</span><span>; } </span><span>/*</span><span> * mysql_query错误处理 * @param1 string $sql,需要执行的SQL语句 * @return mixed,只要语句不出错,全部返回 </span><span>*/</span> <span>private</span> <span>function</span> db_query(<span>$sql</span><span>){ </span><span>//</span><span>发送SQL</span> <span>$res</span> = <span>mysql_query</span>(<span>$sql</span><span>); </span><span>//</span><span>判断结果</span> <span>if</span>(!<span>$res</span><span>){ </span><span>//</span><span>结果出错了 //暴力处理,如果是真实线上项目(生产环境)必须写入到日志文件</span> <span>echo</span> '语句出现错误:<br/>'<span>; </span><span>echo</span> '错误编号' . <span>mysql_errno</span>() . '<br/>'<span>; </span><span>echo</span> '错误内容' . <span>mysql_error</span>() . '<br/>'<span>; </span><span>exit</span><span>; } </span><span>//</span><span>没有错误</span> <span>return</span> <span>$res</span><span>; } </span><span>//</span><span>__sleep方法</span> <span>public</span> <span>function</span><span> __sleep(){ </span><span>//</span><span>返回需要保存的属性的数组</span> <span>return</span> <span>array</span>('host','port','user','pass','dbname','charset','prefix'<span>); } </span><span>//</span><span>__wakeup方法</span> <span>public</span> <span>function</span><span> __wakeup(){ </span><span>//</span><span>连接资源</span> <span>$this</span>-><span>connect(); </span><span>//</span><span>设置字符集和选中数据库</span> <span>$this</span>-><span>setCharset(); </span><span>$this</span>-><span>setDbname(); } </span><span>/*</span><span> * 获取完整的表名 </span><span>*/</span> <span>protected</span> <span>function</span><span> getTableName(){ </span><span>//</span><span>完整表名:前缀+表名</span> <span>return</span> <span>$this</span>->prefix . <span>$this</span>-><span>table; } } </span><span>//</span><span>这个DB类,一般不写析构(不释放资源) </span>
2.使用DB类,但是如果要使用某一个类来创建对象,必须要保证该类已经被加载到代码区里。可以使用一个魔术函数来实现对类的自动加载
自动加载:当一个脚本文件在执行某些语句的时候(实例化)需要去代码区里寻找对应的类,如果找不到会通过自动加载函数来将对应的类文件进行加载。
魔术函数:__autoload()
比如我们在index.php页面中需要使用DB类,那么我们就直接调用即可,具体代码如下:
<?<span>php </span><span>//</span><span>使用DB类的对象来访问数据库 //先加载类文件 //include_once 'DB.class.php'; //如果想使用其他类,又需要加载(所以使用魔术函数__autoload来实现类的自动加载) //显示的写出魔术函数__autoload //参数:需要加载的类的名字</span> <span>function</span> __autoload(<span>$a</span><span>){ </span><span>//</span><span>将对应的类文件加载进来</span> <span>if</span>(<span>is_file</span>("<span>$a</span>.class.php"<span>)){ </span><span>include_once</span> "<span>$a</span>.class.php"<span>; } } </span><span>//</span><span>实例化</span> <span>$db</span> = <span>new</span> DB(<span>array</span>('dbname' => 'mydatabase'<span>)); </span>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

執行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復 bug 和提供新功能。目前最新穩定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數。啟動 Web 伺服器。初始化 ThinkPHP 應用程式。存取 ThinkPHP 應用程式 URL 運行。

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應用程序,ThinkPHP 可能更適合。

《開發建議:如何利用ThinkPHP框架實現非同步任務》隨著網路技術的快速發展,Web應用程式對於處理大量並發請求和複雜業務邏輯的需求也越來越高。為了提高系統的效能和使用者體驗,開發人員常常會考慮利用非同步任務來執行一些耗時操作,例如發送郵件、處理文件上傳、產生報表等。在PHP領域,ThinkPHP框架作為一個流行的開發框架,提供了一些便捷的方式來實現非同步任務。

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產生應用程式碼。啟動應用程式並造訪 http://localhost:8000。

ThinkPHP 是一款高效能的 PHP 框架,具備快取機制、程式碼最佳化、平行處理和資料庫最佳化等優勢。官方性能測試顯示,它每秒可處理超過 10,000 個請求,實際應用中被廣泛用於京東商城、攜程網等大型網站和企業系統。

開發建議:如何利用ThinkPHP框架進行API開發隨著網際網路的不斷發展,API(ApplicationProgrammingInterface)的重要性也日益凸顯。 API是不同應用程式之間進行通訊的橋樑,它可以實現資料共享、功能呼叫等操作,為開發者提供了相對簡單且快速的開發方式。而ThinkPHP框架作為一款優秀的PHP開發框架,具有高效能、可擴展且易用
