导航:首页 > 编程语言 > php中面向对象的机制

php中面向对象的机制

发布时间:2024-02-06 12:16:41

A. php 类的写法有点不明白,对于php面向对象还是不太理解

query方法里边,因为你给的不全,没法判断是你写的究竟是什么$re没在上文中出现这个变量,只有一个$rs,不知道是不是这个?
PHP类,成员有属性和方法,需要加访问修饰限定符如 public private protected等,如:
class person{
private $name;
public function say(){
echo 'hello';
}
}
访问对象属性石必须先对象再属性,
常量,和静态成员就用类名属性,或者方法名访问

这是个操作数据库的类,

定义方法肯定是写在类里边的,并且需要加访问修饰限定符,定义方法就跟普通函数一样,给你个参照吧:

/**
* mysql数据库操作类
*/
class MySQLDB {
//保存单例属性
private static $instance;
//操作数据库所需要的必要信息
private $_host;//主机地址
private $_port;//端口
private $_user;//用户名
private $_pass;//密码
private $_charset;//默认字符集
private $_dbname;//默认数据库
private $_prefix;//表前缀
private $_link;//连接标识保存属性
/**
* 构造方法
* @param $params array 构造时,需要的信息列表 $params = array('host'=>'xxx', 'post'=>'xxx', 'user'=>....);
*
*/
private function __construct($params=array()) {
//通过实例化对象时,传递的参数,初始化属性。
//同时判断,增加默认值
$this->_host = isset($params['host'])?$params['host']:'127.0.0.1';
$this->_port = isset($params['port'])?$params['port']:'3306';
$this->_user = isset($params['user'])?$params['user']:'root';
$this->_pass = isset($params['pass'])?$params['pass']:'';
$this->_charset = isset($params['charset'])?$params['charset']:'utf8';
$this->_dbname = isset($params['dbname'])?$params['dbname']:'';
$this->_prefix = isset($params['prefix'])?$params['prefix']:'';
//连接服务器
$this->_connect();
//设置编码
$this->_setCharset();
//选择数据库
$this->_selectDb();
}
/**
* 单例所需的私有克隆方法
*/
private function __clone() {
}
/**
* 用于获得该类对象的静态方法
*
* @param $params array 构造该对象时 所使用的参数数组
*
* @return 该类的单例
*/
public static function getInstance($params) {
if(!(self::$instance instanceof self)) {
self::$instance = new self($params);
}
return self::$instance;
}

/**
* 连接数据库
*
* @access private
*/
private function _connect() {
if($link = mysql_connect("{$this->_host}:{$this->_port}", $this->_user, $this->_pass)) {
//连接成功
$this->_link = $link;
} else {
//连接失败
exit('-_-!连接失败');
}
}
/**
* 在该类的对象,被反序列化时,对相应的资源进行重新初始化
*/
public function __wakeup() {
//连接服务器
$this->_connect();
//设置编码
$this->_setCharset();
//选择数据库
$this->_selectDb();
}
/**
* 在该类的对象,被序列化时,设置哪些属性应该序列化
*/
public function __sleep() {
return array('_host', '_port', '_user', '_pass', '_dbname', '_charset', '_prefix');
}
/**
* 设置字符集
*
* @access private
*/
private function _setCharset() {
// if(!mysql_query("set names {$this->_charset}")) {
// exit(mysql_error());
// }
$this->_query("set names {$this->_charset}");
}
/**
* 选默认数据库
*/
private function _selectDb() {
if($this->_dbname != '') {
$this->_query("use {$this->_dbname}");
}
}
/**
* 执行sql
*
* @access private
*
* @param $query string 待执行的sql语句
*
* @return mixed 如执行的查询类,返回结果集,非查询类的布尔值
*/
public function _query($query) {
//执行,判断执行结果,返回执行结果。如果有错误,提供错误信息
if($result = mysql_query($query, $this->_link)) {
return $result;//返回结果即可
} else {
//执行失败
echo '-_-好像失败了!<br>';
echo '出错的语句是:', $query, '<br>';
echo '错误的信息是:', mysql_error($this->_link), '<br>';
echo '错误的代码是:', mysql_errno($this->_link), '<br>';
die;//脚本就不走了
}
}

/**
* (标题)获得符合sql,的全部数据,适合用于执行查询类方法,select,show,desc(describe)
*
* (详细信息)通过得到一条查询类语句,返回所有的查询结果,方法内,需要实现,执行,获得结果集,在结果集内取得所有数据
*
* @access public
*
* @param $query_str string 需要执行的查询类字符串
*
* @return array 二维数组,每一个一维元素代表一条记录,每一个二维的元素,表示一个记录的字段
*/
public function getAll($query_str) {
if($result = $this->_query($query_str)) {
//成功
$rows = array();//初始化,防止一条记录都没有。
while($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
} else {
//失败
return false;
}
}
/**
* 获得符合sql,的第一条记录,适合用于执行查询类方法,select,show,desc(describe)
*
* (详细信息)通过得到一条查询类语句,返回第一条查询结果,方法内,需要实现,执行,获得结果集,在结果集内取得第一条数据
*
* @access public
*
* @param $query_str string 需要执行的查询类字符串
*
* @return array 一维数组,每个元素,表示一个记录的字段
*/
public function getRow($query_str) {
if($result = $this->_query($query_str)) {
//成功
$row = mysql_fetch_assoc($result);
return $row;
} else {
//失败
return false;
}
}

/**
* 获得符合sql,的第一条记录的第一个字段,适合用于执行查询类方法,select,show,desc(describe)
*
* (详细信息)通过得到一条查询类语句,返回第一条查询结果的第一个字段,方法内,需要实现,执行,获得结果集,在结果集内取得第一条数据的第一个字段
*
* @access public
*
* @param $query_str string 需要执行的查询类字符串
*
* @return string 表示一个记录的第一个字段的值
*/
public function getOne($query_str) {
if($result = $this->_query($query_str)) {
//成功
$row = mysql_fetch_row($result);//最好使用索引数组
return $row[0];
} else {
//失败
return false;
}
}
/**
* 获取最新插入的自动增长ID
*/
public function last_insert_id() {
return mysql_insert_id($this->_link);
}
/**
* 取得影响的行数
*/
public function affected_rows() {
return mysql_affected_rows();
}

}

B. PHP真的能算是面向对象的语言吗

面向对象三大特性:封装,继承,多态
php可以封装对象,也可以继承,同样可以实现多态
多态是指指出重写和重载,php子类可以重写父类的方法,也可以通过方法的参数数量不同来重载方法,我觉得是面向对象语言

阅读全文

与php中面向对象的机制相关的资料

热点内容
python3伪装浏览器 浏览:240
信息联想服务器专班是干什么的 浏览:97
python获取cpu个数 浏览:862
命令提示符查网速 浏览:227
对于某个理论算法可以直接抄吗 浏览:186
如何访问ftp服务器下载文件 浏览:390
呼兰程序员吐槽剪辑 浏览:491
python计算子网掩码 浏览:57
加密u盘制作成iso镜像 浏览:491
oppo大文件夹图标 浏览:173
用cmd打开python文件 浏览:366
程序员磁盘知识 浏览:584
左搂右抱命令 浏览:931
法律大还是行政命令大 浏览:354
中国银行手机app在哪里刷脸 浏览:900
epidata如何编程 浏览:989
助眠解压玩具电动 浏览:235
4k显示器编程 浏览:267
什么错误在编译时会发现 浏览:700
学会自己解压英语 浏览:44