ホームページ >バックエンド開発 >PHPチュートリアル >Xiaobai、いくつかアドバイスをください: このコード構造を最適化するにはどうすればよいですか?

Xiaobai、いくつかアドバイスをください: このコード構造を最適化するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-13 12:20:07869ブラウズ

Xiaobai、いくつかアドバイスをください: このコード構造を最適化するにはどうすればよいですか?
私は次のように設計しました。1 つはデータベース接続ファイル db.conn.php で、もう 1 つはカスタム関数ファイル config.inc.php

db.conn.php:

<?php<br />$db_host = 'localhost';<br />$db_user = '*****';<br />$db_password = '*******';<br />$db_database = '******';<br />$conn = new mysqli($db_host, $db_user, $db_password, $db_database);<br />mysqli_query($conn, "set names 'utf8'"); <br />if(mysqli_connect_errno()){die('数据库连接失败: ' . mysqli_connect_error());}<br />$site_data = $conn->query("SELECT * FROM `dh_member_control` WHERE `id`=1");<br />$site = mysqli_fetch_array($site_data);<br />?>


config.inc.php:

function marrbase(){<br />if(isset($_COOKIE["uname"]) && isset($_COOKIE["uid"])){<br />global $mbase;<br />global $conn;<br />$mql = "select * from dh_member where `id`=" . $_COOKIE["uid"] . " and `mck`=1";<br />$mbase_data = mysqli_query($conn, $mql);<br />$mbase = mysqli_fetch_array($mbase_data);}<br />else{exit();}<br />}<br /><br />function login_log($muid){<br />if (empty($muid)){exit();}<br />else {<br />global $conn;<br />$lql = "INSERT INTO `dh_mllog` (`uid`,`ltime`,`lip`,`lptxt`) VALUES (". $muid .",'". date("Y-m-d H:i:s") ."','". getIPaddress() ."','". getIPS138(getIPaddress()) ."')" ;<br />if (!mysqli_query($conn, $lql)){die(mysqli_error());exit();}}<br />}<br /><br />function memberislogin($back = NULL){<br />if(!isset($_COOKIE["uname"]) || !isset($_COOKIE["uid"])){echo "<script>alert('没有登录');window.location.href=\"/member/login.php?backurl=". $back ."\";</script>"; exit();}<br />else {<br />global $conn;<br />$login_check = mysqli_query ("SELECT * FROM `dh_member` WHERE `id`=". $_COOKIE["uid"] ." AND `mck`=1");<br />if(!mysqli_num_rows($login_check)){echo "<script>window.location.href=\"/member/login.php?backurl=". $back ."\"</script>"; exit();}}<br />}<br />.....等等自定义函数<br />


ユーザー フロントエンドでこれらのファイルを参照し、出力対話やその他の操作を実行します...

現在、関数をカスタマイズするたびにグローバル $conn を参照する必要があると感じていますが、それを設計するより良い方法はありますか?
Web デザイン全体にとって、より良いデザイン方法はありますか (CMS はお勧めしません)
大規模なプロジェクトを手がけた専門家からのアドバイスをお願いします。

- -- ---解決策----------------------
mysqli から db クラスを継承します
提供:
count 属性、影響を受ける項目の数を返すために使用されます
fetch メソッド、クエリ命令を渡し、1 次元配列を返します
fetchall メソッド、クエリ命令を渡し、2 次元配列を返します
exec メソッド、使用されます非クエリ命令を実行するには
基本的には十分です


-----解決策のアイデア-------- ---
コードのカプセル化と mysql モジュールのカプセル化について学び、必要に応じて、このファイルを参照し、カプセル化されたインターフェイスを直接呼び出します。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。