php5已经开始面向对象,但感觉还不够彻底。
普通实体类
class Customer
{
var $ID;
var $UserName;
//构造函数
function __construct($id,$name)
{
$this->ID=$id;
$this->UserName=$name;
}
//析构
function __destruct()
{
echo '析构';
}
//get访问器,只会间接调用
function __get($name)
{
return $this->$name;
}
//set赋值
function __set($name,$val)
{
$this->$name = $val;
}
//这里我每次echo一个已实例化的$customer时,只显示'用户id,用户名',变量$ID与$UserName不出现,何故?
function __toString()
{
return '用户ID:'.$ID.',用户名:'.$UserName;
}
}
抽象类与它的继承类
abstract class DataProvider
{
abstract function getCustomer($id);
}
class MySqlProvider extends DataProvider
{
private $query='';
function getCustomer($id) //这里不像c#有override关键字
{
$arr = array();
$customer = NULL;
$db = mysql_connect('localhost','root','');
mysql_select_db('testdb',$db);
if(mysql_errno($db)>0)
{
echo 'connection error';
return;
}
$query = "SELECT * FROM TEST WHERE ID=$id";
if($id==0)
{
$query = "SELECT * FROM TEST";
}
$result = mysql_query($query,$db);
$num =mysql_num_rows($result);
if($num==0)
{
return NULL;
}
for ($i = 0; $i < $num; $i++)
{
$row = mysql_fetch_assoc($result);
$customer = new Customer($row['id'],$row['username']);
$arr[$i] = $customer;
}
mysql_close($db);
return $arr;
}
}
刚用mysqli与mysql通信时出现问题
$db = new mysqli('localhost','root','xxx','testdb');
运行提示:
Fatal error: Class 'mysqli' not found
已经改了php.ini了还是如此,郁闷。
命令行看下php -m,扩展加载了吗
# function __toString()
# {
# return ‘用户ID:’.$ID.’,用户名:’.$UserName;
# }
这个地方使用 $ID\$UserName 时需要用 this 来界定,否则会认为是局部的新变量,值为空,所以不显示。应该是这样吧。
@cute:
看了一下,我是用Phped来调试的,是Phped的配置不对,现在已经好了。
@Faceker:
en,是这样的。
blog体验很好。
刚说完体验好,就出西西了。
为什么我不写邮箱点提交连提示都没有啊。
@我de艾蜜莉:
邮箱为空提交时有提示啊~~require啊:o
慢慢深入
学着写过一个PHP留言本,现在又忘了:-/