本文目錄一覽:
PHP中,類的封裝,調用問題
?
class Page{
function 分頁函數(參數){
$perNumber = 2;
$page = $_GET[‘page’];
$count = mysql_query(“select count(*) from people”);
$rs = mysql_fetch_array($count);
$totalNumber = $rs[0];
$totalPage = ceil($totalNumber/$perNumber);
if(!isset($page)){
$page = 1;
}
$startCount = ($page-1)*$perNumber;
$result = mysql_query(“select * from people limit $startCount,$perNumber”);
$num = mysql_numrows($result);
for($i=0;$i$num;$i++){
$a = mysql_result($result,$i,”id”);
$b = mysql_result($result,$i,”name”);
$c = mysql_result($result,$i,”age”);
echo “br /”.$a.”br /”.$b.”br /”.$c.”br /”;
}
}
}
?
vs2010怎麼把php代碼封裝成安裝程序
1,VS2010新建一個安裝包製作項目。(取名為”素材包”)
2,素材包上右擊–ADD–ASSEMBLY選定自己要安裝的可執行文件。然後相關程序集都會被自動加載進去,以後就是要將沒有加載的程序補充進去。
3,添加需要添加的文件,在File System中的App Folder中添加文件。
4,卸載,在系統中加載msiexec.exe,然後創建快捷方式,在Arguments中填上 /x{produce NO}(其中/x只是msiexec.exe的一個卸載參數,呵呵,這個程序很牛的,還有其他功能,在不同的參數下面)
5,自定義函數,這個函數中能實現很多功能,比如和目標計算機互動等,在Solution中ADD一個inno.cs(安裝工程)。其實就是一個繼承自安裝程序的類。將此函數設定為主輸出以後,自定 義可以參考
6,一個比較惱火的問題就是自動加載路徑了, 這中間有詳細的介紹。呵呵。
什麼是php中的封裝
封裝是php面向對象的其中一個特性,將多個可重複使用的函數封裝到一個類裡面。在使用時直接實例化該類的某一個方法,獲得需要的數據
如果是私有的方法和屬性值,外部無法訪問,具有一定的保護作用。
面向對象之封裝 例子
class A{
public $name = ‘老王’;
// protected $name = ‘老王’;
//private $name = ‘老王’;
//自己訪問
public function saya(){
return $this-name;
}
}
//實例化對象
$b = new A;
//public:外部、家族、自己都可以訪問
//protected:家族和自己都可以訪問,外部無法訪問
//private:自己可以訪問,外部和家族都無法訪問
echo ‘外部訪問:’.$b-name.’br’; //如果是私有的,訪問不了
echo ‘家族訪問:’.$b-sayb().’br’;
echo ‘自己訪問:’.$b-saya().’br’;
PHP 繼承、封裝、多態
-子類只能繼承父類的非私有屬性
-子類繼承父類後,相當於將父類的屬性和方法copy到子類,可以直接使用$this調用該屬性;
-php只能單繼承,不支持一個類繼承多個類。但是一個類可以進行多層繼承
類實現封裝是為了不讓外面的類隨意修改一個類的成員變量,所以在定義一個類的成員的時候,我們使用private關鍵字設置這個成員的訪問權限只能被這個類的其他成員方法調用,而不能被其他類中的方法調用,即通過本類中提供的方法來訪問本類中的私有屬性
-所以在該類中我們會提供一個訪問私有屬性的方法
-然後我們一般會定義兩個方法來實現對一個變量的操作,即__get()和__set()方法
一個類被多個子類繼承,如果這個類的某個方法,在多個子類中,表現出不同的功能,我們稱這種行為為多態(同一個類的不同子類表現出不同的形態)
-子類繼承父類-子類重寫父類的方法-父類引用指向子類對象
求PHP數據庫封裝類操作代碼
?php
class MySQL{
private $host; //服務器地址
private $name; //登錄賬號
private $pwd; //登錄密碼
private $dBase; //數據庫名稱
private $conn; //數據庫鏈接資源
private $result; //結果集
private $msg; //返回結果
private $fields; //返回字段
private $fieldsNum; //返回字段數
private $rowsNum; //返回結果數
private $rowsRst; //返回單條記錄的字段數組
private $filesArray = array(); //返回字段數組
private $rowsArray = array(); //返回結果數組
private $charset=’utf8′; //設置操作的字符集
private $query_count=0; //查詢結果次數
static private $_instance; //存儲對象
//初始化類
private function __construct($host=”,$name=”,$pwd=”,$dBase=”){
if($host != ”) $this-host = $host;
if($name != ”) $this-name = $name;
if($pwd != ”) $this-pwd = $pwd;
if($dBase != ”) $this-dBase = $dBase;
$this-init_conn();
}
//防止被克隆
private function __clone(){}
public static function getInstance($host=”,$name=”,$pwd=”,$dBase=”){
if(FALSE == (self::$_instance instanceof self)){
self::$_instance = new self($host,$name,$pwd,$dBase);
}
return self::$_instance;
}
public function __set($name,$value){
$this-$name=$value;
}
public function __get($name){
return $this-$name;
}
//鏈接數據庫
function init_conn(){
$this-conn=@mysql_connect($this-host,$this-name,$this-pwd) or die(‘connect db fail !’);
@mysql_select_db($this-dBase,$this-conn) or die(‘select db fail !’);
mysql_query(“set names “.$this-charset);
}
//查詢結果
function mysql_query_rst($sql){
if($this-conn == ”) $this-init_conn();
$this-result = @mysql_query($sql,$this-conn);
$this-query_count++;
}
//取得字段數
function getFieldsNum($sql){
$this-mysql_query_rst($sql);
$this-fieldsNum = @mysql_num_fields($this-result);
}
//取得查詢結果數
function getRowsNum($sql){
$this-mysql_query_rst($sql);
if(mysql_errno() == 0){
return @mysql_num_rows($this-result);
}else{
return ”;
}
}
//取得記錄數組(單條記錄)
function getRowsRst($sql,$type=MYSQL_BOTH){
$this-mysql_query_rst($sql);
if(empty($this-result)) return ”;
if(mysql_error() == 0){
$this-rowsRst = mysql_fetch_array($this-result,$type);
return $this-rowsRst;
}else{
return ”;
}
}
//取得記錄數組(多條記錄)
function getRowsArray($sql,$type=MYSQL_BOTH){
!empty($this-rowsArray) ? $this-rowsArray=array() : ”;
$this-mysql_query_rst($sql);
if(mysql_errno() == 0){
while($row = mysql_fetch_array($this-result,$type)) {
$this-rowsArray[] = $row;
}
return $this-rowsArray;
}else{
return ”;
}
}
//更新、刪除、添加記錄數
function uidRst($sql){
if($this-conn == ”){
$this-init_conn();
}
@mysql_query($sql);
$this-rowsNum = @mysql_affected_rows();
if(mysql_errno() == 0){
return $this-rowsNum;
}else{
return ”;
}
}
//返回最近插入的一條數據庫的id值
function returnRstId($sql){
if($this-conn == ”){
$this-init_conn();
}
@mysql_query($sql);
if(mysql_errno() == 0){
return mysql_insert_id();
}else{
return ”;
}
}
//獲取對應的字段值
function getFields($sql,$fields){
$this-mysql_query_rst($sql);
if(mysql_errno() == 0){
if(mysql_num_rows($this-result) 0){
$tmpfld = @mysql_fetch_row($this-result);
$this-fields = $tmpfld[$fields];
}
return $this-fields;
}else{
return ”;
}
}
//錯誤信息
function msg_error(){
if(mysql_errno() != 0) {
$this-msg = mysql_error();
}
return $this-msg;
}
//釋放結果集
function close_rst(){
mysql_free_result($this-result);
$this-msg = ”;
$this-fieldsNum = 0;
$this-rowsNum = 0;
$this-filesArray = ”;
$this-rowsArray = ”;
}
//關閉數據庫
function close_conn(){
$this-close_rst();
mysql_close($this-conn);
$this-conn = ”;
}
//取得數據庫版本
function db_version() {
return mysql_get_server_info();
}
}
PHP函數封裝!
你傳入的sql不應該那樣傳,可用性太低,函數或方法應該傳入變量,或者說可變的值。上代碼,不懂的問
/*封裝函數*/
$arr = $_POST;
//$sql = “INSERT INTO ui234_user (username,password,u_name,u_time) VALUES (?,?,?,?)”;
$table_name = “ui234_user”;
$field_arr = array(‘username’,’password’,’u_name’,’u_time’);
insert($arr,$table_name,$field_arr);
function insert($arr,$table_name,$field_arr){
$sql = ‘INSERT INTO ‘.$table_name.’ (‘;
$field_name = ”;//名稱
$field_value = ”;//值
$field_post = ”;//post取值
/*拼裝字段*/
foreach ($field_arr as $key = $value) {
if($key == count($field_arr)-1){
$field_name .= $value;
$field_value.= ‘?’;
$field_post .= ‘$arr[“‘.$field_name.'”]’;
}else{
$field_name .= $value.’,’;
$field_value.= ‘?,’;
$field_post .= ‘$arr[“‘.$value.'”],’;
}
}
$sql .= $field_name.’) VALUES (‘.$field_value.’);’;
$mysqli=connect();
$stmt = $mysqli-prepare(“{$sql}”);
$exe_str = ‘$stmt-bind_param(“ssss”,’.$field_post.’);’;
//輸出字符串結果
echo $sql.’hr/’;
echo $exe_str;
//然後用eval執行字符串代碼
eval($exe_str);//相當於是:$stmt-bind_param(‘ssss’,$arr[‘username’],$arr[‘password’],$arr[‘u_name’],$arr[‘u_time’]);
stmt-execute();
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/207154.html