magento核心类Varien_Object

本文深入解析了Magento中数据模型的设计原理,重点介绍了核心类Varien_Object的功能与使用方法,包括如何通过不同方式设置和获取数据属性。

magento所有的数据模型都继承自类“Varien_Object”。这个类属于Magento的系统类库.

 

1

lib/Varien/Object.php

Magento模型的数据保存在“_data”属性中,这个属性是“protected”修饰的。父类“Varian_Object”定义了一些函数用来取出这些数据。我们上面的例子用了“getData”,这个方法返回一个数组,数组的元素是“key/value”对。【注:其实就是数据表中一行的数 据,“key”就是列名,“value”就是值】我们可以传入一个参数获取某个具体的“key”的值。

1

$model->getData();

2

$model->getData('title');

还有一个方法是“getOrigData”,这个方法会返回模型第一次被赋予的值。【注:因为模型在初始化以后,值可以被修改,这个方法就是拿到那个最原始的值】
 

1

$model->getOrigData();

2

$model->getOrigData('title');

getData("xxx")getXXX的效果是一样的

1

$customer = new Varien_Object();

2

$customer->setData(

 

3

array(

4

'name'  => 'Google',

 

5

'email' => 'lonely@gmail.com'

6

)

 

7

);

然后我们就可以这样来设置和获取属性值

1

$customer->getName();

2

$customer->getEmail();

 

3

$customer->getData("name");

4

$customer->addData("name",value);

 

5

$customer->setData("name",value);

6

$customer['name'];

 

7

$customer['name']=value;

上面都是等价的, 是不是很神奇?那继续往下看

“Varien_Object”也实现了一些PHP的特殊函数,比如神奇的“__call”。你可以对任何一个属性调用“get, set, unset, has”方法

01

/**

02

* Set/Get attribute wrapper

 

03

*

04

* @param   string $method

 

05

* @param   array $args

06

* @return  mixed

 

07

*/

08

public function __call($method, $args)

 

09

{

10

switch (substr($method, 0, 3)) {

 

11

case 'get' :

12

//Varien_Profiler::start('GETTER: '.get_class($this).'::'.$method);

 

13

$key = $this->_underscore(substr($method,3));

14

$data = $this->getData($key, isset($args[0]) ? $args[0] : null);

 

15

//Varien_Profiler::stop('GETTER: '.get_class($this).'::'.$method);

16

return $data;

 

17

case 'set' :

18

//Varien_Profiler::start('SETTER: '.get_class($this).'::'.$method);

 

19

$key = $this->_underscore(substr($method,3));

20

$result = $this->setData($key, isset($args[0]) ? $args[0] : null);

 

21

//Varien_Profiler::stop('SETTER: '.get_class($this).'::'.$method);

22

return $result;

 

23

case 'uns' :

24

//Varien_Profiler::start('UNS: '.get_class($this).'::'.$method);

 

25

$key = $this->_underscore(substr($method,3));

26

$result = $this->unsetData($key);

 

27

//Varien_Profiler::stop('UNS: '.get_class($this).'::'.$method);

28

return $result;

 

29

case 'has' :

30

//Varien_Profiler::start('HAS: '.get_class($this).'::'.$method);

 

31

$key = $this->_underscore(substr($method,3));

32

//Varien_Profiler::stop('HAS: '.get_class($this).'::'.$method);

 

33

return isset($this->_data[$key]);

34

}

 

35

throw new Varien_Exception("Invalid method ".get_class($this)."::".$method."(".print_r($args,1).")");

36

}

看看"Varien_Object"中定义的__call函数,通过该函数,只要通过EAV模型加入的新属性,都可以使用getxxx,setXXX等方法...

内容概要:本文详细阐述了工业母机技术领域中“高级结构设计工程师”这一岗位的全方位任职要求与职业发展路径,涵盖职位对标、目标企业、学历与证书要求、年龄范围、管理半径、晋升关键点、必备工作经验年限以及薪资待遇区间。重点突出该岗位对高端数控机床核心结构(如床身、主轴箱、导轨等)设计能力的要求,强调有限元分析、精度控制、热变形补偿、振动抑制等核心技术能力,并明确指出需具备项目主导经验、团队管理能力和跨部门协作经验。同时,根据不同企业类型和发展阶段,给出了清晰的年薪划分标准,体现了市场对该岗位的技术深度与综合能力的高度认可。; 适合人群:具备5年以上工业母机或高端机床结构设计经验,致力于向高级工程师、技术专家或管理岗位发展的结构设计从业者;或希望转型进入高端装备制造业的精密机械研发人员。; 使用场景及目标:①用于求职者精准定位职业发展方向,评估自身与高级岗位之间的能力差距;②辅助企业制定人才招聘标准与薪酬体系;③指导技术人员规划技能提升路径,聚焦核心技术积累与项目经验沉淀。; 阅读建议:建议结合个人职业发展阶段对照文中各项指标进行自我诊断,重点关注“晋升关键点”与“必备年限”部分,有针对性地补齐技术短板、积累主导项目经验,并注重专利成果与团队管理能力的培养,以全面提升竞争力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值