php函数调用问题

mailghyth 2009-09-04 05:22:57
<?php
class Cartz_Hotel_RoomController extends Mage_Core_Controller_Front_Action{
public function listingAction() {
$handle = Mage::getSingleton('core/resource')->getConnection('core_write');

$query = $handle->query('select name from rooms');
while ($row = $query->fetch()) {
$row = new Varien_Object($row);
echo "<strong>" . $row->getName() . "</strong><br/>";
}

}
}?>
我想问的问题在这一行
$handle = Mage::getSingleton('core/resource')->getConnection('core_write');

Mage调用本身的方法getSingleton,在Mage.php这个文件中能找到
但是不知道是怎么调用的到getConnection这个方法?
因为我找遍了Cartz_Hotel_RoomControllerMage_Core_Controller_Front_Action这些类的所有父类,还有Mage这个类的文件,完全没有这个getConnection方法,而且php手册都没这个方法
该文件不加载Mage类,也不继承,但是php的自由,我可以理解
getConnection未免也太神奇了吧???
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2009-09-04
  • 打赏
  • 举报
回复
return Mage::registry($registryKey); 这里.
你在前面print_r下Mage::registry($registryKey);怎么可能是数组?

if (!Mage::registry($registryKey)) {
Mage::register($registryKey, Mage::getModel($modelClass, $arguments));
}
这里很清晰了,如果Mage::registry($registryKey)不存在,就实例化一个,实例化成功后,将利用Mage的$_registry数组,根据$registryKey建立key与对象的hash关系.
注意:Mage::register !== Mage::registry,Mage::register是另外一个方法,你没贴出来,不过可以想象它是干什么的.
mailghyth 2009-09-04
  • 打赏
  • 举报
回复
下面的方法和变量全部都是Mage.php文件里Mage类的
static private $_registry = array();

public static function getSingleton($modelClass='', array $arguments=array())
{
$registryKey = '_singleton/'.$modelClass;
if (!Mage::registry($registryKey)) {
Mage::register($registryKey, Mage::getModel($modelClass, $arguments));
}
return Mage::registry($registryKey);
}

public static function registry($key)
{
if (isset(self::$_registry[$key])) {
return self::$_registry[$key];
}
return null;
}
php写的可真是奔放阿
程序猿之殇 2009-09-04
  • 打赏
  • 举报
回复
Mage::getSingleton('core/resource')
应该返回一个类的实例

->用来访问类的公用成员函数getConnection
mailghyth 2009-09-04
  • 打赏
  • 举报
回复
我看了一下Mage::getSingleton('core/resource')返回的是一个数组
请问数组的对象里有自带的getConnection方法吗???
你说的我也懂
foolbirdflyfirst 2009-09-04
  • 打赏
  • 举报
回复
Mage::getSingleton('core/resource')返回的是一个对象,getConnection是返回的这个对象的一个方法.

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧