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();//这是错误的,不能调用保护方法
你需要理解继承、公有、保护和私有的概念。
继承:子类继承父类的公有、保护属性和方法。
公有:类的实例可以访问的属性和方法。
保护:只能在类的内部及其子类内部访问的属性和方法。
私有:只能在类的内部访问的属性和方法。
这是个很基础的问题,建议你多看书。