认识php第二天

in Develop

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了还是如此,郁闷。

7 Comments

7 Comments

  1. 命令行看下php -m,扩展加载了吗

  2. # function __toString()
    # {
    # return ‘用户ID:’.$ID.’,用户名:’.$UserName;
    # }

    这个地方使用 $ID\$UserName 时需要用 this 来界定,否则会认为是局部的新变量,值为空,所以不显示。应该是这样吧。

  3. @cute:
    看了一下,我是用Phped来调试的,是Phped的配置不对,现在已经好了。
    @Faceker:
    en,是这样的。

  4. blog体验很好。

    刚说完体验好,就出西西了。
    为什么我不写邮箱点提交连提示都没有啊。

  5. @我de艾蜜莉:
    邮箱为空提交时有提示啊~~require啊:o

  6. 学着写过一个PHP留言本,现在又忘了:-/

Leave a Reply

Using Gravatars in the comments - get your own and be recognized!

XHTML: These are some of the tags you can use: <a href=""> <b> <blockquote> <code> <em> <i> <strike> <strong>