对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。当这些对象可以用数据直接表示时,我们就称他为属性,尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性。
在PHP里我们可以定义一个类,类(Class)就是指变量与一些使用这些变量的函数的集合。PHP是一种松散类型的语言,所以通过类型重载不起作用,通过参数的个数不同来重载也不起作用。 有时在面向中重载构造函数非常好,这样你可以通过不同的方法创建对象(传递不同数量的参数)。在PHP中就是通过类来实现的。
在PHP中是通过类来完成信息封装的,在PHP中定义类的语法是:
class Class_name // 在面向对象编程类中,习惯上类的第一个字符为大写,并且必须符合变量的命名规则。
{
//函数与变量的集合
}
?>
在定义类时你可以按自已的喜好的格式进行定义,但最好能保持一种标准,这样开发起来会更有效些。
数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可以是一个整数,一个数组,一个相关数组(Associative Array)或者是一个对象。
下面是一个类定义的实际例子:
class Student
{
var $str_Name; //姓名
var $str_Sex; //性别
var $int_Id; //学号
var $int_English; //英语成绩
var $int_maths; //数学成绩
}
?>
这是一个很普通定义类的简单例子,用于显示学生的学习成绩,类名为Student,Student类包涵了一个学生的基本属性:姓名、性别、学号、英语成绩和数学成绩。
function我们称之为在类中被定义的函数,在函数中访问类成员变量时,你应该使用$this->var_name,其中var_name指的是类中被声明的变量,否则对一个函数来说,它只能是局部变量。 我们先定义一个Input()的函数,用来给实例中的对象赋以初值:
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_Englis=$English;
$this->int_Maths=$Maths;
}
{
echo (“姓名:$this->str_Name<br>
”);
echo (“性别:$this->str_Sex <br>
”);
echo (“学号:$this->int_Id <br>
”);
echo (“英语成绩:$this->int_English <br>
”);
echo (“数学成绩:$this->int_Maths <br>
”);
}
而定义好的类则必须使用new关键词来生成对象:
$A_student=new Student;
例如我们要为一个名为$Wing的对象创建实例,并进行赋值,可以使用下面的代码:
$Wing =new Student; //用new关键词来生成对象
$Wing ->Input (“Wing”,”男”,33,95,87);
//分别输入Wing的姓名、性别、学号、英语成绩、数学成绩,其中姓名和性别是字符型变量,所以需要用双引号,其它为数值型变量则不需要。
通过下面这段完整的源代码,我们就可以很清楚的看到类在PHP是怎么被运用的:
class Student
{
var $str_Name;
var $str_Sex;
var $int_Id;
var $int_English;
var $int_maths;
function Input ( $Name, $Sex, $Id, $English, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_English=$English;
$this->int_Maths=$Maths;
}
function ShowInfo()
{
echo (“姓名:$this->str_Name<br>
”);
echo (“性别:$this->str_Sex <br>
”);
echo (“学号:$this->int_Id <br>
”);
echo (“英语成绩:$this->int_English <br>
”);
echo (“数学成绩:$this->int_Maths <br>
”);
}
}
$Wing = new Student;
$Wing->Input (“Wing”,”男”,33,95,87);
$Paladin = new Student;
$Paladin->Input (“paladin”,”女”,38,58,59.5);
$Wing->ShowInfo();
$Paladin->ShowInfo();
?>
姓名:Wing
性别:男
学号:33
英语成绩:95
数学成绩:87
姓名:Paladin
性别:女
学号:38
英语成绩:58
数学成绩:59.5
PHP现有的版本较以前的版本在对面向对象编程的支持方面有了很大的改善,但支持的还不是很完整,不过现阶段PHP对面向对象编程语言提供的支持不但有利于我们设计程序的结构,对于对程序的维护也能提供很大的帮助。
群里很多PHP爱好者一直受phpmyadmin的乱码问题困扰.我自从有了mysql-front后,我就很少使用phpmyadmin了.但每次连接远程主机,就比较慢.造成操作不便.今天有点时间,就下了最新的版本来研究.
首先说明我的数据库使用情况:
phpmyadmin 版本2.7.0-pl1
(如果你使用其它版本,可能会有所不同,请对照修改或者到 这里下载 phpmyadmin 2.7.0-pl1)
mysql版本MySQL 5.0.11-beta-nt
我在以前是使用GB2312编码方式,直接写入数据库的,字符集是mysql默认的latin1
PHP5以后我写的程序都改用UTF-8编码方式了,也是直接读写的.所以字符集也应试是mysql默认的latin1
我在用PHP操作数据时 没有 使用过以下语句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
好,开始吧.
把下载的ZIP包解压到www目录后打开文件夹...好久不见,配置文件名都从config.inc.php改成了config.default.php .
我修改了以下代码:
31行
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin-2.7.0-pl1/';
45行
$cfg['blowfish_secret'] = 'this';
71行
$cfg['Servers'][$i]['auth_type'] = 'cookie'; // Authentication method (config, http or cookie based)?
接着,浏览器打开http://localhost/phpMyAdmin-2.7.0-pl1/ 使用root登录.language是默认的chinese simplified(zh-utf-8)
浏览一个UTF-8的表.乱码.
查看了html源代码,charset=utf-8
查看他的语言选择文件libraries/select_lang.lib.php
263行 'utf-8' => 'utf8',
我用的是默认的latin1 所以,这里应试改成latin1.改好保存,刷新.成功
转到一个以前用GB2312编码录入的库.是乱码.
退出.以chinese simplified(zh-gb2312)登录.到处看.乱码.
和上面一样找到libraries/select_lang.lib.php
250行 'gb2312' => 'gb2312',
把gb2312改为latin1.保存,刷新.却不行.还是一样.
很纳闷.查看了html源代码,charset还是utf-8.不对呀,应试是GB2312才正常.
无意中在首页的language下拉菜单中,发现没有登录时的chinese simplified(zh-gb2312)这一栏.(下图)
不解,仔细一对,列表项都是utf-8结束的.问题应试在这.
找libraries/select_lang.lib.php里对应的zh-gb2312,在它后面加上一个"-utf-8"
这回有了.查看了html源代码,charset是GB2312了.
如何在两种语言转换呢?
我试着回到UTF-8编码的表.没错,是乱码.
转到首页.language下拉菜单中选择zh-utf-8.再看看,OK了.
试着修改,添加新数据.都没再有乱码了.
结束:我的思路是以html的charset对照mysql的charset.
最后提醒:
如果你操作表时使用过以下语句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
那么你修改时libraries/select_lang.lib.php可能会有所不同.多试试几种方式.会有不一样的收获.
转载请标明出处为www.phpv.net
首先说一下我用的软件版本。
PHP 5.1.6
APACHE 2.0.59(注意:APACHE 2.2.X版本以上是不支持PHP 5的)
MYSQL 5.0.24a
好了,现在开始安装,我先装的php5,直接解压文件到C:\php(安装到哪里并不会有影响,凭个人喜号,本文中的所有路径都以我的安装路径,请大家在自己的机器上安装的时候注意修改为自己的路径),接着安装APACHE,我直接把它装到C盘根目录下,在安装过程中,会出现3个文本框,上面两个输入你的本机IP,最下面的输入你的EMAIL,好的。安装完毕。现在编辑..\Apache Group\Apache2\conf\下的httpd.conf文件。用记事本打开该文件,在最后添上这两行代码:
LoadModule php5_module "C:/php/php5apache2.dll"
AddType application/x-httpd-php .php
我在C:\目录下建立了一个www的目录用于存放我的站点文件,在httpd.conf里找到这样一句话:DocumentRoot "C:/Apache2/htdocs"改成了DocumentRoot "C:/www"。这样,就将主目录设置成了C:\www。如果你不想更改主目录位置,可以不更改此项。
修改目录的默认首页:
找到DirectoryIndex 后面写上你想设置为首页的文件名,如:index.html index.php等。
语言优先级,找到下列语句
LanguagePriority zh-CN zh-TW en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv
把中文(zh-CN zh-TW)的部分剪切放到前面(也就是将原来文件中的相应
部分改成如上的。
其他也没什么好改动的。APACH的配置就到这里。接着讲PHP的配置。
把php.ini-dist复制到C:\windows 下改名为 php.ini(装过php的都做过吧)
然后修改了几个地方:
在Data Handling下找到post_max_size = 8M
这是PHP将接受的POST数据最大大小,可更改为20M。
在Paths and Directories下找到extension_dir=
这里设置的是PHP搜索扩展库的位置,将其路径设为extensions文件夹的位置,即改成:
extension_dir= "C:\php\ext"
在File Uploads下找到upload_max_filesize = 2M,允许上传的的最大文件大小
可更改为20M。
Dynamic Extensions
这里是PHP扩展设置部分,列出了PHP所有的可支持扩展,前面都加了分号注
释,表示目前PHP配置不支持扩展,我们可以将分号去掉让PHP支持该扩展
下面列出的是几个常用且较实用的PHP扩展
把下面几句前面的分号去掉
;extension=php_mbstring.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_imap.dll
;extension=php_mysql.dll
到这里php.ini就配置结束。接着很重要的一点将
C:\PHP\libmysql.dll,C:\PHP\ext\php_mysql.dll,C:\PHP\ext\php_mysqli.dll
拷贝到C:\Windows\system32下,这样PHP5才能支持MYSQL。
重起APACHE,在主目录下新建一个记事本文件test在里面输入
<?php
phpinfo();
?>
保存后修改后缀名为PHP。在浏览器输入