这篇文章主要围绕使用PHP对象和php中的对象展开,旨在为您提供一份详细的参考资料。我们将全面介绍使用PHP对象的优缺点,解答php中的对象的相关问题,同时也会为您带来JS对象与PHP对象的对比、ph
这篇文章主要围绕使用PHP对象和php中的对象展开,旨在为您提供一份详细的参考资料。我们将全面介绍使用PHP对象的优缺点,解答php中的对象的相关问题,同时也会为您带来JS对象与PHP对象的对比、php中对象的串行化,php对象串行化_PHP教程、php实现对象克隆的方法,php对象克隆_PHP教程、PHP对象克隆clone用法 PHP对象克隆clone怎么做的实用方法。
本文目录一览:- 使用PHP对象(php中的对象)
- JS对象与PHP对象的对比
- php中对象的串行化,php对象串行化_PHP教程
- php实现对象克隆的方法,php对象克隆_PHP教程
- PHP对象克隆clone用法 PHP对象克隆clone怎么做
使用PHP对象(php中的对象)
我以前主要用PHP编写脚本,现在考虑对它“更严肃”:)
我正在一个远足网站上工作,我需要将一些值放入一个对象中,然后我尝试将其传递回调用代码.
我试过这样做:
$trailhead = new Object ();
但是这个系统对我不利.
然后我根本没有声明对象,并开始像这样使用它:
$trailhead->trailhead_name = $row['trailhead_name'];
$trailhead->park_id = $row['park_id'];
这看起来似乎合理.但至少有3个问题:
>由于在从数据库获取内容时执行该代码,如果有多行,我该怎么办?
>当我将$trailhead传递回调用代码时,变量为空
>我真的可能更喜欢为Trailhead制作一个真实的物体,如下所示:
class Trailhead
{
private $trailhead_name;
private $park_id;
private $trailhead_id;
public function __construct()
{
$this->trailhead_name = NULL;
$this->park_id = NULL;
$this->trailhead_id = NULL;
}
}
人们在这些情况下通常会做些什么?我的方法在哪里出错?我知道它不止一个地方:)
解决方法:
> $trailheads [] = $trailhead;
>我会使用$trailhead的print_r()来检查它是否符合您的预期. PHP中的默认对象类型将是stdClass.
>是的,那会更好,因为它会让你的Trailhead对象具有功能.你目前正在这样做的方式基本上没有利用PHP的任何对象功能 – 它本质上是一个语法略有不同的数组.
JS对象与PHP对象的对比
一、对象的创建与访问
1、JS对象的创建与访问
//方式一(通过内置构造函数创建后添加属性)
var obj = new Object();
obj.name = ''Lucy''; //通过点添加属性
obj[''sex''] = ''female''; //通过[]添加属性
//方式二(通过json格式直接创建添加属性)
var obj = {''name'':''lily'',''sex'':''female''};
//js对象可通过''.''和''[]''访问属性
console.log(obj.name);
console.log(obj[''name'']);
2、PHP对象的创建与访问
//PHP只能通过类创建出对象实体
class Demo {
public $hello = ''Hello'';
public static $world = ''world'';
}
$demo = new Demo();
echo $demo->hello; //访问常规属性
echo '' '';
echo $demo::$world; //访问静态属性
二、对象的遍历
1、JS对象的遍历 (for...in...)
var obj = {name:''lucy'',age:''29''};
for (var x in obj){
console.log(obj[x]); //lucy 29
console.log(x); //name age
}
2、PHP对象的遍历(foreach...as...)
class Demo {
public $one = 1;
protected $two = 2;
private $three = 3;
static $four = 4;
public function showAllProperties() {
foreach ($this as $key=>$value) {
echo "<br>$key :$value"; //可输出所有非静态属性
}
}
}
$demo = new Demo();
$demo->showAllProperties();
ps:PHP使用foreach...as...遍历对象时,只能输出public类型属性,可以通过定义一个方法实现遍历所有非静态属性,静态属性可通过 对象::属性 方式输出。
php中对象的串行化,php对象串行化_PHP教程
php中对象的串行化,php对象串行化
我们大家有知道php串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。文章这里就php串行化为大家详细的介绍。你在反串行化类的对象之前定义的类,php可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行。为了这样的目的,php会自动寻找__sleep和__wakeup方法。
立即学习“PHP免费学习笔记(深入)”;
当一个对象被PHP串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值。如果没有__sleep方法,PHP将保存所有属性。<?<span>php </span><span>/*</span><span> * * @Authors peng--jun * @Email 1098325951@qq.com * @Date 2016-01-23 14:40:38 * @Link </span><span>http://www.cnblogs.com/xs-yqz/</span><span> * @version $Id$ ========================================== </span><span>*/</span><span> header(</span><span>"</span><span>Content-type: text/html; charset=UTF-8</span><span>"</span><span>); </span><span>class</span><span> Person{ </span><span>private</span><span> $name; </span><span>private</span><span> $sex; </span><span>private</span><span> $age; function __construct($name,$age,$sex){ $</span><span>this</span>->name =<span> $name; $</span><span>this</span>->age =<span> $age; $</span><span>this</span>->sex =<span> $sex; } function say(){ echo </span><span>"</span><span>我的名字:</span><span>"</span>.$<span>this</span>->name.<span>"</span><span>性别为: </span><span>"</span>.$<span>this</span>->sex.<span>"</span><span>年龄为:</span><span>"</span>.$<span>this</span>-><span>age; } <span>//在类中添加此方法,在串行化的时候自动调用并返回数组</span> function __sleep(){ $arr </span>= array(<span>"</span><span>name</span><span>"</span>,<span>"</span><span>age</span><span>"</span>);<span>//</span><span>数组中的成员$name和$age将被串行化,成员$sex则将被忽略。</span> <span>return</span><span>($arr);<span>//使用__sleep()方法的时候必须返回一个数组。</span> } <span> //在反串行化对象时自动调用该方法,没有参数也没有返回值</span> function __wakeup(){ $</span><span>this</span>->age = <span>40</span><span>;<span>//在重新组织对象的时候,为新对象中的$age属性重新赋值</span> } } $person1 </span>= <span>new</span> Person(<span>"</span><span>张三</span><span>"</span>,<span>20</span>,<span>"</span><span>男</span><span>"</span><span>); $person1_string </span>=<span> serialize($person1); echo $person1_string.</span><span>"</span><span><br /></span><span>"</span><span>; </span><span>//</span><span>反串行化对象,并自动调用了__wakeup()方法重新为独享中的age赋值。</span> $person2 =<span> unserialize($person1_string); $person2</span>-><span>say(); </span>?>
输出的结果为:
O:<span>6</span>:<span>"</span><span>Person</span><span>"</span>:<span>2</span>:{s:<span>12</span>:<span>"</span><span>Personname</span><span>"</span>;s:<span>6</span>:<span>"</span><span>张三</span><span>"</span>;s:<span>11</span>:<span>"</span><span>Personage</span><span>"</span>;i:<span>20</span><span>;} 我的名字:张三性别为: 年龄为:</span><span>40</span>
2.将串行化的字符串保存到文件中,从文件中读取字符串,反串性化实例。
header(<span>"</span><span>Content-type: text/html; charset=UTF-8</span><span>"</span><span>); </span><span>class</span><span> Person{ </span><span>private</span><span> $name; </span><span>private</span><span> $sex; </span><span>private</span><span> $age; function __construct($name,$age,$sex){ $</span><span>this</span>->name =<span> $name; $</span><span>this</span>->age =<span> $age; $</span><span>this</span>->sex =<span> $sex; } function say(){ echo </span><span>"</span><span>我的名字:</span><span>"</span>.$<span>this</span>->name.<span>"</span><span>性别为: </span><span>"</span>.$<span>this</span>->sex.<span>"</span><span>年龄为:</span><span>"</span>.$<span>this</span>-><span>age; } } $person1 </span>= <span>new</span> Person(<span>"</span><span>张三</span><span>"</span>,<span>21</span>,<span>"</span><span>男</span><span>"</span><span>); $person1_string </span>=<span> serialize($person1); file_put_contents(</span><span>"</span><span>file.txt</span><span>"</span>, $person1_string);<br /><br />
header(<span>"</span><span>Content-type: text/html; charset=UTF-8</span><span>"</span><span>); </span><span>class</span><span> Person{ </span><span>private</span><span> $name; </span><span>private</span><span> $sex; </span><span>private</span><span> $age; function __construct($name,$age,$sex){ $</span><span>this</span>->name =<span> $name; $</span><span>this</span>->age =<span> $age; $</span><span>this</span>->sex =<span> $sex; } function say(){ echo </span><span>"</span><span>我的名字:</span><span>"</span>.$<span>this</span>->name.<span>"</span><span> 性别为:</span><span>"</span>.$<span>this</span>->sex.<span>"</span><span> 年龄为:</span><span>"</span>.$<span>this</span>-><span>age; } } $person2_string </span>= file_get_contents(<span>"</span><span>file.txt</span><span>"</span><span>); $person2 </span>=<span> unserialize($person2_string);<span>//反串性化重新形成对象$person2.</span> $person2</span>-><span>say(); </span>?>
立即学习“PHP免费学习笔记(深入)”;
立即学习“PHP免费学习笔记(深入)”;
php实现对象克隆的方法,php对象克隆_PHP教程
php实现对象克隆的方法,php对象克隆
本文实例讲述了php实现对象克隆的方法。分享给大家供大家参考。具体如下:
<?php //定义类staff,其中包括属性id和name class staff { private $id; private $name; function setID($id) { $this->id = $id; } function getID() { return $this->id; } function setName($name) { $this->name = $name; } function getName() { return $this->name; } } //创建一个新的staff对象并初始化 $ee1 = new staff(); $ee1->setID("145"); $ee1->setName("Simon"); //克隆一个新的对象 $ee2 = clone $ee1; //重新设置新对象的ID值 $ee2->setID("146"); //输出ee1和ee2 echo "ee1 ID: ".$ee1->getID()."<br>"; echo "ee1 Name: ".$ee1->getName()."<br>"; echo "ee2 ID: ".$ee2->getID()."<br>"; echo "ee2 Name: ".$ee2->getName()."<br>"; ?>
<?php //定义类staff,其中包括属性id和name class staff { private $id; private $name; function setID($id) { $this->id = $id; } function getID() { return $this->id; } function setName($name) { $this->name = $name; } function getName() { return $this->name; } //这里是__clone函数 function __clone() { $this->id = $this->id + 1; } } //创建一个新的staff对象并初始化 $ee1 = new staff(); $ee1->setID("145"); $ee1->setName("Simon"); //克隆一个新的对象 $ee2 = clone $ee1; //重新设置新对象的ID值 //$ee2->setID("146"); //输出ee1和ee2 echo "ee1 ID: ".$ee1->getID()."<br>"; echo "ee1 Name: ".$ee1->getName()."<br>"; echo "ee2 ID: ".$ee2->getID()."<br>"; echo "ee2 Name: ".$ee2->getName()."<br>"; ?>
希望本文所述对大家的php程序设计有所帮助。
PHP对象克隆clone用法 PHP对象克隆clone怎么做
PHP对象克隆clone用法 PHP对象克隆clone怎么做,具体如下:
浅克隆:只是克隆对象中的非对象非资源数据,即对象中属性存储的是对象类型,则会出现克隆不完全
phpclass B{ public $val = 10;}class A{ public $val = 20; public $b; public function __construct(){ $this-b = new B(); }}$obj_a = new A();$obj_b = clone $obj_a;$obj_a-val = 30;$obj_a-b-val = 40;var_dump($obj_a);echo ‘br’;var_dump($obj_b);
运行结果如下:
object(A)[1] public ‘val’ = int 30 public ‘b’ = object(B)[2] public ‘val’ = int 40object(A)[3] public ‘val’ = int 20 public ‘b’ = object(B)[2] public ‘val’ = int 40
深克隆:一个对象的所有属性数据都彻底的复制,需要使用魔术方法__clone(),并在里面实现深度克隆
phpclass B{ public $val = 10;}class A{ public $val = 20; public $b; public function __construct(){ $this-b = new B(); } public function __clone(){ $this-b = clone $this-b; }}$obj_a = new A();$obj_b = clone $obj_a;$obj_a-val = 30;$obj_a-b-val = 40;var_dump($obj_a);echo ‘br’;var_dump($obj_b);
运行结果如下:
object(A)[1] public ‘val’ = int 30 public ‘b’ = object(B)[2] public ‘val’ = int 40object(A)[3] public ‘val’ = int 20 public ‘b’ = object(B)[4] public ‘val’ = int 10
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
关于使用PHP对象和php中的对象的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于JS对象与PHP对象的对比、php中对象的串行化,php对象串行化_PHP教程、php实现对象克隆的方法,php对象克隆_PHP教程、PHP对象克隆clone用法 PHP对象克隆clone怎么做等相关知识的信息别忘了在本站进行查找喔。
本文标签: