最新消息:觉得本站不错的话 记得收藏哦 博客内某些功能仅供测试 讨论群:135931704 快养不起小站了 各位有闲钱就打赏下把 My Email weicots#gmail.com Please replace # with @

Magento数据操作&数据收集器 学习

Magento 资料整理 ajiang-tuzi 1941浏览

在php5中,更是发扬了Array,php内置了一些类和接口,
允许你创建你自己的数据结构。Magento充分利用了这一点,
在使用Varien_Data_Collection来做数据收集的时候,
它实现了php内置IteratorAggregate对象迭代器和Countable两个接口。
下面是用php内置类ArrayObject的一个例子。

$array=new ArrayObject();
class Mycollection extends ArrayObject{}
$collection=new Mycollection();
$collection[]='bar';
var_dump($collection);
//object(Mycollection)#2 (1) { ["storage":"ArrayObject":private]=> array(1) { [0]=> string(3) "bar" } }
<?php
/*
 * Created by PhpStorm.
 * User:ajiang-tuzhi
 * QQ:1050653098@qq.com
 * WebSite:www.weicot.com
 * Date: 2015/11/11
 * Time: 10:25
 */
class Aps_Weicot_thingController extends Mage_Core_Controller_Front_Action{
    public function indexAction()
    {
        $thing_1 = new Varien_Object();
        /*创建一个数据收集器</H4< p>
首先,我们创造一些新的对象。*/

        $thing_1->setName('jiang');
        $thing_1->setAge('20');
        $thing_2 = new Varien_Object();
        $thing_2->setName('ajiang');
        $thing_2->setAge('21');
        $thing_2->setLastName('tuzhi');
       /* Magento中所有的Model都继承Varien_Object,
       在面向对象编程中,这样做的好处是当你想往多个Model中添加方法的时候,
       你只需要简单地修改一个文件即可。
       在继承Varien_Object的类中,有两个魔术方法,get/set,
       你可以很方便的向对象中加入一个属性(值),
       让我们看个例子。*/

        //var_dump($thing_2->getName());
        //var_dump($thing_1->getData());
        //string(6) "ajiang" array(2) { ["name"]=> string(5) "jiang" ["age"]=> string(2) "20" }
      /*  这个归功于php5的新特性,ArrayAccess接口。
      也是 “Object Oriented Programming”.
     现在然我们把这些对象加到数据收集器Varien_Data_Collection中。
      很多程序员将Collection看成是数组,
      当然我不反对。*/

        $collection_of_things=new Varien_Data_Collection();
        $collection_of_things
            ->addItem($thing_1)
            ->addItem($thing_2);
        /*大多数Magento data Collections继承于Varien_Data_Collection,你可以使用里面的任何一个方法。
那么我们可以做些什么呢?接下来我们使用foreach去循环它。*/

        foreach($collection_of_things as $thing){
       // var_dump($thing->getData());
    }
        //array(2) {
        // ["name"]=> string(5) "jiang"
        // ["age"]=> string(2) "20" }
        // array(3) {
        // ["name"]=> string(6) "ajiang"
        // ["age"]=> string(2) "21"
        // ["last_name"]=> string(5) "tuzhi" }
// var_dump($collection_of_things->getFirstItem()); //获取第一个数据 和最后一个数据
        //object(Varien_Object)#74 (7) {
        // ["_data":protected]=> array(2) { ["name"]=> string(5) "jiang" ["age"]=> string(2) "20" }
        // ["_hasDataChanges":protected]=> bool(true)
        // ["_origData":protected]=> NULL
        // ["_idFieldName":protected]=> NULL
        // ["_isDeleted":protected]=> bool(false)
        // ["_oldFieldsMap":protected]=> array(0) { }
        // ["_syncFieldsMap":protected]=> array(0) { } }

   $collection_of_things->getLastItem()->getData();//h获取最后一个数据
        //array(3) { ["name"]=> string(6) "ajiang" ["age"]=> string(2) "21" ["last_name"]=> string(5) "tuzhi" }
        var_dump($collection_of_things->toXml());//输出为xml
/*
<?xml version="1.0" encoding="UTF-8"?>
<collection>
    <totalRecords></totalRecords>
    <items><item>
            <name><![CDATA[jiang]]></name>
            <age><![CDATA[20]]></age>
        </item>
        <item>
            <name><![CDATA[ajiang]]></name>
            <age><![CDATA[21]]></age>
            <last_name><![CDATA[tuzhi]]></last_name>
        </item>
    </items>
</collection>"*/


//只取某一段的值
//var_dump($collection_of_things->getColumnValues('name'));
        //array(2) { [0]=> string(5) "jiang" [1]=> string(6) "ajiang" }
        //基本的过滤功能
        var_dump($collection_of_things->getItemByColumnValue('name','ajiang'));
        //string(335) " " object(Varien_Object)#28 (7) {
        // ["_data":protected]=> array(3) {
        // ["name"]=> string(6) "ajiang"
        // ["age"]=> string(2) "21"
        // ["last_name"]=> string(5) "tuzhi" }
        // ["_hasDataChanges":protected]=> bool(true)
        // ["_origData":protected]=> NULL
        // ["_idFieldName":protected]=> NULL
        // ["_isDeleted":protected]=> bool(false)
        // ["_oldFieldsMap":protected]=> array(0) { }
        // ["_syncFieldsMap":protected]=> array(0) { } }
        /*模型数据收集器(Model Collections)
          前面我们有提到,所有Magento的模型数据收集器都继承Varien_Data_Collectionm,
        所以理论上我们可以使用之前的所有方法。
        下面让我们以product模型实战下。*/

    }
}

参考以及引用

Magento数据操作&数据收集器 学习2
表达式中的运算符EQ NE GT GE LT LE…..

转载请注明:(●--●) Hello.My Weicot » Magento数据操作&数据收集器 学习