当前位置:首页 » 编程语言 » 类与对象php

类与对象php

发布时间: 2022-04-22 10:17:55

php中类与对象的区别和关系是什么

举个例,类就好比人类,类有各种属性和各种方法,就像人类有姓名,年龄,身高,体重等属性,也有吃饭,睡觉,走路等行为(方法)。而对象,就是具体的一个人,是从人类这个类里实例化出来的一个对象,这个人具有人类的各种属性和方法。如果把上面这对话写成代码的话,就是

class 人类{
public $姓名, $年龄, $身高, $体重……
public function 吃饭(){
……
}
public function 睡觉(){
……
}
public function 走路(){
……
}
……
}
$人=new 人类;

$人->姓名='李雷';
$人->年龄=30;
$人->身高=175;
$人->姓名=75;
$人->吃饭();
……
这就是类和对象的区别和关系。

㈡ PHP 中的 对象 类 属性 实例化 到底是怎么理解的啊·

我的理解
说一个人养了一只小狗(定义一个对象),把狗牵过来,摆在面前,让它确实存在(实例化)。
类,就是类别。人是一类,狗是一类。
属性就是人的特点,长头发、白皮肤、黑眼珠。
方法就是人会唱歌、会说话、会跑步跳跃等各种行为。
对象,就是类里面的一个个体。人类中的每一个人都是一个对象

㈢ PHP运用类和对象实现斐波那契数列

<?php
class demo {
private $_current = 0;
private $_next = 1;
protected function _getNext() {
$value = $this->_current + $this->_next;
$this->_current = $this->_next;
$this->_next = $value;
return $value;
}
public function getString($max) {
if($max < 1) return ''
$str = ''
while($next = $this->_getNext()) {
if ($next <= $max) {
$str .= ', ' . $next;
} else {
break;
}
}
return substr($str, 1);
}
}

不过这东西需要用对象这么麻烦吗...如果是老师教的...这水平...完全没有实用价值

㈣ 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();
}

}

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

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

㈥ PHP语言的有哪些优势和特点

优势和特点:

1、执行速度快:PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快,这是它的第一个突出的特点。

2、具有很好的开放性和可扩展性:PHP属于自由软件,其源代码完全公开,任何程序员为PHP扩展附加功能非常容易。

3、数据库支持:PHP支持多种主流与非主流的数据库,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle 8、PostgreSQL等。其中,PHP与MySQL是现在绝佳的组合,它们的组合可以跨平台运行。

4、面向对象编程:PHP提供了类和对象。为了实现面向对象编程,PHP4及更高版本提供了新的功能和特性,包括对象重载、引用技术等。

5、版本更新速度快:与数年才更新一次的ASP相比,PHP的更新速度就要快得多,因为PHP每几周就更新一次。

6、具有丰富的功能:从对象式的设计、结构化的特性、数据库的处理、网络接口应用、安全编码机制等,PHP几乎涵盖了所有网站的一切功能。

7、可伸缩性:传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。

8、功能全面:php包括图形处理、编码与解码、压缩文件处理、xml解析、支持http的身份认证、cookie、 pop3 、snmp等。

(6)类与对象php扩展阅读:

PHP的发展现状:

PHP技术核心和相关的人才需求,正符合互联网的发展趋势。网站开发、API接口开发,服务器端开发,移动端后台开发,内部OA系统开发,游戏开发等均用到PHP语言。

在IT行业和互联网的飞速发展的时代,企业对PHP开发人员的需求也大幅增加,目前在国内专业的互联网招聘网站,好多知名公司发布招聘PHP岗位,其中包括网易、京东、联想、阿里巴巴、滴滴打车、美团、大众点评、易到用车、网络、新浪、搜狐、奇虎、腾讯等。


㈦ php中的类有什么用和自定义函数有什么区别

请看PHP手册18章,里面的内容你看了就明白。

第18章类与对象(PHP4)
目录

继承
构造函数
范围解析操作符(::)
parent
序列化对象-会话中的对象
魔术函数__sleep和__wakeup
构造函数中的引用
对象的比较



类是变量与作用于这些变量的函数的集合。使用下面的语法定义一个类:

<?php
classCart{
var$items;//购物车中的物品

//将$num个$artnr物品加入购物车

functionadd_item($artnr,$num){
$this->items[$artnr]+=$num;
}

//将$num个$artnr物品从购物车中取出

functionremove_item($artnr,$num){
if($this->items[$artnr]>$num){
$this->items[$artnr]-=$num;
returntrue;
}elseif($this->items[$artnr]==$num){
unset($this->items[$artnr]);
returntrue;
}else{
returnfalse;
}
}
}
?>

上面的例子定义了一个Cart类,这个类由购物车中的商品构成的数组和两个用于从购物车中添加和删除商品的函数组成。

警告
不能将一个类的定义分割到多个文件中。也不能将一个类的定义分割到多个PHP块中,除非该分割是在一个方法声明内部。以下用法将不起作用:

<?php
classtest{
?>
<?php
functiontest(){
print'OK';
}
}
?>

但是以下用法是可以的:

<?php
classtest{
functiontest(){
?>
<?php
print'OK';
}
}
?>

以下警告仅用于PHP4。

小心
名称stdClass已经被Zend使用并保留。不能在PHP代码中定义名为stdClass的类。

小心
函数名__sleep和__wakeup在PHP类中是魔术函数。除非想要与之联系的魔术功能,否则在任何类中都不能以此命名函数。

小心
PHP将所有以__开头的函数名保留为魔术函数。除非想要使用一些见于文档中的魔术功能,否则建议不要在PHP中将函数名以__开头。

在PHP4中,var变量的值只能初始化为常量。用非常量值初始化变量,需要一个初始化函数,该函数在对象被创建时自动被调用。这样一个函数被称之为构造函数(见下面)。

<?php
/*PHP4中不能这样用*/
classCart{
var$todays_date=date("Y-m-d");
var$name=$firstname;
var$owner='Fred'.'Jones';
/*不过包含有常量的数组可以*/
var$items=array("VCR","TV");
}

/*应该这样进行*/
classCart{
var$todays_date;
var$name;
var$owner;
var$items=array("VCR","TV");
functionCart(){
$this->todays_date=date("Y-m-d");
$this->name=$GLOBALS['firstname'];
/*etc...*/
}
}
?>
类也是一种类型,就是说,它们是实际变量的蓝图。必须用new运算符来创建相应类型的变量。

<?php
$cart=newCart;
$cart->add_item("10",1);

$another_cart=newCart;
$another_cart->add_item("0815",3);
?>
上述代码创建了两个Cart类的对象$cart和$another_cart,对象$cart的方法add_item()被调用时,添加了1件10号商品。对于对象$another_cart,3件0815号商品被添加到购物车中。

$cart和$another_cart都有方法add_item(),remove_item()和一个items变量。它们都是明显的函数和变量。可以把它们当作文件系统中的某些类似目录的东西来考虑。在文件系统中,可以拥有两个不同的README.TXT文件,只要不在相同的目录中。正如从为了根目录访问每个文件需要输入该文件的完整的路径名一样,必须指定需要调用的函数的完整名称:在PHP术语中,根目录将是全局名字空间,路径名符号将是->。因而,名称$cart->items和$another_cart->items命名了两个不同的变量。注意变量名为$cart->items,不是$cart->$items,那是因为在PHP中一个变量名只有一个单独的美元符号。

<?php
//正确,只有一个$
$cart->items=array("10"=>1);

//不正确,因为$cart->$items变成了$cart->""
$cart->$items=array("10"=>1);

//正确,但可能不是想要的结果:
//$cart->$myvar变成了$cart->items
$myvar='items';
$cart->$myvar=array("10"=>1);
?>
在定义类的时候,无法得知将使什么名字的对象来访问:在编写Cart类时,并不知道之后对象的名称将会命名为$cart或者$another_cart。因而你不能在类中使用$cart->items。然而为了类定义的内部访问自身的函数和变量,可以使用伪变量$this来达到这个目的。$this变量可以理解为“我自己的”或者“当前对象”。因而'$this->items[$artnr]+=$num'可以理解为“我自己的物品数组的$artnr计数器加$num”或者“在当前对象的物品数组的$artnr计数器加$num”。

注意:伪变量$this通常未定义,如果其所在的方法是被静态调用的话。但这不是个严格规定:如果一个方法被从另一个对象内静态调用的话,则$this会被定义。此时$this的值是那个发出调用的对象。用下例演示:

<?php
classA
{
functionfoo()
{
if(isset($this)){
echo'$thisisdefined(';
echoget_class($this);
echo")\n";
}else{
echo"\$thisisnotdefined.\n";
}
}
}

classB
{
functionbar()
{
A::foo();
}
}

$a=newA();
$a->foo();
A::foo();
$b=newB();
$b->bar();
B::bar();
?>
上例将输出:

$thisisdefined(a)
$thisisnotdefined.
$thisisdefined(b)
$thisisnotdefined.注意:有一些不错的函数用来处理类和对象。应该关注一下类/对象函数。

㈧ php模块和类对象的区别

建议看看下面链接的网页,有问题再补充:网页链接

㈨ php类和对象问题

$this
的含义是表示
实例化后的
具体对象!
我们一般是先声明一个类,然后用这个类去实例化对象!
但是,当我们在声明这个类的时候,想在类本身内部使用本类的属性或者方法。应该怎么表示呢?
例如:
我声明一个User类!它只含有一个属性
$name;
class
User
{
public
$_name;
}
现在,我给User类加个方法。就用getName()方法,输出$name属性的值吧!
复制PHP内容到剪贴板
PHP代码:
class
User
{
public
$name;
function
getName()
{
echo
$this->name;
}
}
//如何使用呢?
$user1
=
new
User();
$user1->name
=
'张三';
$user1->getName();
//这里就会输出张三!
$user2
=
new
User();
$user2->name
=
'李四';
$user2->getName();
//这里会输出李四!
怎么理解呢?
我上面创建了两个User对象。分别是
$user1

$user2

当我调用
$user1->getName()的时候。
上面User类中的代码
echo
$this->name
;
就是相当于是
echo
$user1->name;
----------------------------------------->>>补充一下>>>
有static修饰的变量和函数不能出现$this
你看到的函数一定没有static
建议你系统的学习一下PHP,这样瞎猜是很浪费时间的
static
$a1和self::$a1或者$a::$a1是一起使用的。
var
$a1和$this->a1是一起使用的
class
Abc{
static
$a1;
}
class
Abc{
var
$a1;
}
两个$a1是不同的。
第一个用self::$a1或者$a::$a1引用,
第二个用$this->$a1或者$a->a1引用
首先static的函数里不能出现$this,只能是self
class
Abc{
public
static
$a1
=
"im
a1!<br/>";
public
static
function
go()
{
echo(self::$a1);
}
}
Abc::go();
?>

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:333
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:374
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:609
java用什么软件写 发布:2025-05-18 03:56:19 浏览:30
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:105
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:940
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:736
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:800
网卡访问 发布:2025-05-18 03:35:04 浏览:507
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:369