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

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

在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" } }

首先,我们创造一些新的对象。*/

        $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
/*
"*/


//只取某一段的值
//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数据操作&数据收集器 学习

文章来源于互联网:Magento数据操作&数据收集器 学习

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。