phpclass使用
① php類Class詳解
php類Class詳解
class 類定義成員變數方法有三種: 1、私有變數或方法定義關鍵字 private 變數名 private 方法(){} 2、公有變數或方法定義關鍵字 public 變數名 public 方法(){} 3、受保護的變數或方法定義關鍵字 protected 變數 protected 方法(){}
面向對象方式類細節:
如果一個類中含有抽象方法,必須將抽象方法的所在的類聲明成抽象類 如果一個類繼承某個抽象類,則它自己必須聲明一個抽象類,或者實現一個從A類繼承的抽象方法 介面 1、介面的使用基本語法 interface 介面名{ //屬性 //方法 } 介面的方法都不能有方法體 2、如何去實現介面基本語法,一個類可以使用N多個介面 class 類名 implements 介面名1,介面名2{ } 介面的作用就是,聲明一些方法,讓 其他類來實現,介面還體現編程中我們希望的效果,高內聚低偶合 1、介面可以繼承多個介面 2、當一個類繼承了某些介面,就必須全部實現這些介面裡面的方法 3、介面方法許可權必須為public 默認為public許可權 Final方法 1、Final方法定義的類方法不能被其他子類改寫 2、Final關鍵字不能去修飾類屬性 什麼使用用final 1、因為安全考慮,類的某個方法不允許修改 2、不希望某個類被其他的類繼承
② get_class說明
get_class() 是 PHP 中的一個內置函數,用於返回對象實例所屬類的名字。
使用語法為:string get_class([object obj])。
其中,obj 參數可選。如果 obj 是一個對象,則返回該對象實例所屬類的名字;如果 obj 不是一個對象,則返回 FALSE。
在 PHP 擴展庫中定義的類返回其原始定義的名字。但在 PHP 4 中,get_class() 返回用戶定義的類名的小寫形式。而自 PHP 5 起,無論在擴展庫還是用戶自定義類中,get_class() 都會返回類名定義時的名字,如同擴展庫中的類名一樣。
值得注意的是,在對象的方法中調用 get_class() 時,obj 參數為可選參數。
總之,get_class() 函數提供了一種方便的方法,可以獲取對象實例所屬類的名字,這對於程序調試和維護非常有用。了解其工作原理和用法,可以幫助開發者更高效地使用 PHP 編寫代碼。
③ php彈出「undefined property:stdclass」 ,怎麼解決
這種情況一般是你對一個類對象,使用了屬性調用造成的。
比如應該是
echo$a->att1;
你寫錯成了:
echo$a['att1'];
改回來就可以了。
PHP中使用關鍵字 class 來定義一個類。類的命名一般使用首字元大寫,而後每個單詞首字元大寫連接的方式方便閱讀。
在PHP5中,屬性指在class 中聲明的變數。在聲明變數時,必須使用 public private protected 之一進行修飾,定義變數的訪問許可權。PHP中的屬性:用來描述對象的數據元素稱為對象的屬性(也稱為數據/狀態)
Public(公開): 可以自由的在類的內部外部讀取、修改。
Private(私有): 只能在這個當前類的內部讀取、修改。
Protected(受保護):能夠在這個類和類的子類中讀取和修改。屬性的使用:通過引用變數的 -> 符號調用變數指向對象的屬性。
在方法內部通過 $this-> 符號調用同一對象的屬性。
所以應該用箭頭調用而不是括弧。
④ 誰給個php操作mysql類並有詳細使用說明或例子
下面這個,是針對php5的一個簡單資料庫封裝類,適合學習,其他的如刪除、更新等操作,你可以自己加上:
<?php
class Mysql{ //首先定義一個類,首寫字母大寫
public $host;//伺服器名,訪問修飾符PUBLIC證明$host是一個公共的屬情在類的內部外部都可訪問,可以被繼承
public $user;//用戶名,是公共的屬性
private $pass;//密碼,問修飾符private證明$pass是私有的.只能在類的內部使用且不能被繼承.
public $dbname;//資料庫名,也是公共的屬性.
//__construct聲名這是一個造函數,定義一些初始的信息.有三個參數
public function __construct($host,$user,$pass,$dbname){
$this->host = $host;
$this->慧雀user = $user;
$this->戚晌pass = $pass;
$this->dbname = $dbname;
$link = @mysql_connect($this->host,$this->user,$this->pass)
or die("error");
@mysql_select_db($this->dbname,$link)
or die("error2");
}
//定義資料庫的查尋和顯示函數
function myQuery($sql){
$result = mysql_query($sql);
if(!$result){
echo "error3";
exit;
}
$num = mysql_num_rows($result);
if($num){
echo "NO".$num;
}
while($row = mysql_fetch_assoc($result)){
echo '<tr><td bgcolor="#fffddd"><pre>'.htmlspecialchars(stripslashes($row['body']))."<pre></td></tr>";
}
}
}
$rutt = new Mysql('localhost','root','ssss','calvin');//實例化一個類...記住這里的參數是和構高碧鋒造函數的參數一樣的...
$rutt->myQuery('select * from calvin_body');//運行資料庫查尋並顯示的函數..
?>
下面這個是針對php5以下版本的資料庫封裝類,體現了php類的繼承,一個許願版程序的:
<?php
/*
* FileName: DatabaseSQL.inc.php
* Author: Terry
* Function: 建立DatabaseSQL對象,實現對資料庫的基本操作
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop / http://www.blue4me.net
*/
// 定義DatabaseSQL對象
Class DatabaseSQL
{
var $CONN = ""; // 連接號
var $HOST = "Localhost"; // 主機名
var $USER = ""; // 用戶名
var $PASSWORD = ""; // 密碼
// DatabaseSQL類的構造函數
function DatabaseSQL($DBNAME)
{
$user = $this -> USER;
$password = $this -> PASSWORD;
$host = $this -> HOST;
$db = $DBNAME;
// 連接資料庫
$conn = mysql_connect($host, $user, $password);
mysql_select_db($db, $conn);
$this -> CONN = $conn;
return true;
}
// 定義查詢操作
function select($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,獲得結果
$result = mysql_query($strSQL, $conn);
if ( (!$result) or (empty($result)) ) {
return false;
}
$num = 0;
$data = array();
// 將查詢結果放二維數組中
while ( $row = mysql_fetch_array($result) ) {
$data[$num] = $row;
$num++;
}
mysql_free_result($result);
return $data;
}
// 定義插入操作
function insert($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,插入新數據
$result = mysql_query($strSQL, $conn);
if ( !result ) return false;
// 獲得記錄的id號
$result = mysql_insert_id();
return $result;
}
// 定義更新操作
function update($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,更新資料庫
$result = mysql_query($strSQL, $conn);
return $result;
}
// 定義刪除操作
function delete($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,刪除記錄
$result = mysql_query($strSQL, $conn);
return $result;
}
}
?>
----------------------------------
<?php
/*
* FileName: Wish.inc.php
* Author: Terry
* Function: 建立Wish對象,實現對許願板進行操作功能
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop / http://www.blue4me.net
*/
require "config.inc.php";
require "DatabaseSQL.inc.php";
// 定義Wish對象
Class Wish extends DatabaseSQL
{
// 構造函數
function Wish()
{
$DBName = $GLOBALS["dbname"];
$this -> DatabaseSQL($DBName);
}
// 添加新願望(use in wish/save.php?action=add_wish)
function AddWish($name,$receiver,$type,$address,$content,$hide,$addtime)
{
$strSQL = "insert into Wish (Name, Receiver, Type, Address, Content, Hide, AddTime) values ('$name', '$receiver', '$type', '$address', '$content', '$hide', '$addtime')";
$result = $this -> insert($strSQL);
return $result;
}
// 修改指定id的願望內容(use in save.php?action=edit_wish)
function EditWish($wid,$name,$receiver,$type,$address,$content,$hide)
{
$strSQL = "update `Wish` set `Name` = '$name', `Receiver` = '$receiver', `Type` = '$type', `Address` = '$address', `Content` = '$content', `Hide` = '$hide' where `WID` = '$wid' ";
$result = $this -> update($strSQL);
return $result;
}
// 願望列表(use in index.php)
function ListWish($startid,$list_nums)
{
$strSQL = "select * from Wish order by AddTime desc LIMIT $startid,$list_nums";
$result = $this -> select($strSQL);
return $result;
}
// 獲取指定願望信息(use in index.php?go=view_wish)
function GetWish($wid)
{
$strSQL = "select * from Wish where WID = '$wid'";
$result = $this -> select($strSQL);
return $result;
}
// 更新指定願望的瀏覽數(use in index.php?go=view_wish)
function UpdateHit($wid)
{
$strSQL = "update `Wish` set `Hit` = ( `Hit` + 1 ) where `WID` = '$wid'";
$result = $this -> update($strSQL);
return $result;
}
// 刪除指定願望信息(use in save.php?action=del_wish)
function DelWish($wid)
{
$strSQL = "delete from Wish where WID = '$wid'";
$result = $this -> delete($strSQL);
return $result;
}
}
?>
---------------------------------------
<?php
/*
* FileName: config.inc.php
* Author: Terry
* Function: 系統基本設置
* Version : B.S - Wish v1.0
* CreateDate: 2004-03-19
* Copyright: Blue-Workshop
* Tec-Support: http://www.blue4me.net / http://feeltouch.8u8.com
* Attention: 請保留版權信息,謝謝 ^_^
*/
// 資料庫信息
$dbhost = "Localhost"; /* 主機名 */
$dbuser = ""; /* 資料庫用戶 */
$dbpwd = ""; /* 資料庫密碼 */
$dbname = "BS_Wish"; /* 資料庫名 */
// 管理員信息
$adminname = "blue"; /* 初始化管理員 */
$adminpwd = "blue"; /* 初始化管理密碼 */
?>
⑤ 在php中如何設置類的屬性,如何調用類的方法
PHP訪問類的屬性、方法使用箭頭語法(->)。這里我給你一個例子供你參考:
<?php
classMyClass{//定義MyClass類
public$name;//定義了一個公有屬性
protected$_age;//定義了一個保護屬性
private$_email;//定義了一個私有屬性
publicfunctionmy_method(){//定義my_method方法
}
protectedfunction_my_method2(){//定義_my_method2方法
}
}
$obj=newMyClass;//實例化
$obj->name='noname';//設置name屬性
$obj->_age=12;//這是錯誤的,不能設置保護屬性
$obj->address='KingStreet.'//設置一個未聲明的屬性是允許的,效果和公有屬性類似,但未賦值前不能使用。
$obj->my_method()//調用公有方法
$obj->_my_method2();//這是錯誤的,不能調用保護方法
你需要理解繼承、公有、保護和私有的概念。
繼承:子類繼承父類的公有、保護屬性和方法。
公有:類的實例可以訪問的屬性和方法。
保護:只能在類的內部及其子類內部訪問的屬性和方法。
私有:只能在類的內部訪問的屬性和方法。
這是個很基礎的問題,建議你多看書。