GVKun编程网logo

使用PHP对象(php中的对象)

1

这篇文章主要围绕使用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中的对象)

使用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对象的对比

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教程

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免费学习笔记(深入)”;

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1094586.htmlTechArticlephp中对象的串行化,php对象串行化 我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个...

php实现对象克隆的方法,php对象克隆_PHP教程

php实现对象克隆的方法,php对象克隆_PHP教程

php实现对象克隆的方法,php对象克隆

本文实例讲述了php实现对象克隆的方法。分享给大家供大家参考。具体如下:

<&#63;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>"; 
&#63;> 

登录后复制
<&#63;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>"; 
&#63;> 

登录后复制

希望本文所述对大家的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1019432.htmlTechArticlephp实现对象克隆的方法,php对象克隆 本文实例讲述了php实现对象克隆的方法。分享给大家供大家参考。具体如下: php //定义类staff,其中包...

PHP对象克隆clone用法 PHP对象克隆clone怎么做

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常见数据库操作技巧汇总》

喜欢 (2)or分享 (0)

关于使用PHP对象php中的对象的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于JS对象与PHP对象的对比、php中对象的串行化,php对象串行化_PHP教程、php实现对象克隆的方法,php对象克隆_PHP教程、PHP对象克隆clone用法 PHP对象克隆clone怎么做等相关知识的信息别忘了在本站进行查找喔。

本文标签: