首页 / PHP / 避免单类PHP的多类实例化?
避免单类PHP的多类实例化?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了避免单类PHP的多类实例化?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2074字,纯文字阅读大概需要3分钟。
内容图文
![避免单类PHP的多类实例化?](/upload/InfoBanner/zyjiaocheng/719/34b19af898ca488c8ac75f1b79124d78.jpg)
我已经写了一个与购物车的前端(Web浏览器端)一起工作的课程.
这很简单,因为我向类发送了一个我埋在URL中的产品ID,然后查询填充类变量的数据库,以便通过一些公共方法检索数据.
为了与我的实际物理网页交互,我有一个文件,我称之为viewFunctions.php.其中我实例化我的名为ItemViewPackage()的类:
<?php
require_once(dirname(__FILE__) . '/ItemViewPackage.php');
$viewObject = new ItemViewPackage($_GET['page']);
所以,我有shoppingcartpage.php(物理网址),它需要加载我的类ItemViewPackage()的文件viewFunctions.php.
输出页面shoppingcartpage.php调用get_item_info(‘title’)或get_item_info(‘price’)等函数,它们在viewFunctions.php文件中调用如下:
function get_info($type){
echo $viewObject->get_info($type);
}
现在,关闭,这是行不通的,因为我认为$viewObject不是全局的.所以我像这样使$viewObject全局:
function get_info($type){
global $viewObject;
echo $viewObject->get_info($type);
}
但是,这也不起作用,我仍然在“非对象上调用成员函数get_info()”时出错
现在,唯一有效的是:
function get_info($type){
$viewObject = new ItemViewPackage($_GET['page']);
echo $viewObject->get_info($type);
}
但是,我不希望每次调用此函数时都重新实例化我的对象(对于几个信息位,这几次都是这样).我宁愿在viewFunctions.php文档的顶部实例化一次,并在每次调用此函数时使用该对象.
我完全错了吗?
提前致谢.
图(希望它有助于可视化)
解决方法:
无论如何你还需要viewFunctions.php吗?它只包装ItemViewPackage.删除它并直接使用ItemViewPackage,例如
// shopping.php
include_once 'ItemViewPackage.php';
$viewObject = new ItemViewPackage($_GET['page']);
<div><?php echo $viewObject->get_info('title'); ?></div>
<div><?php echo $viewObject->get_info('price'); ?></div>
然后你不必打扰globals or Singletons.如果你不想要第二个实例,不要实例化第二个实例. It’s simple as that in PHP.如果viewFunctions.php中有任何修改$viewObject实例输出的内容,请考虑将其作为一个类并让它将$viewObject聚合到一个属性中,例如:
// viewFunctions.php
include_once 'ItemViewPackage.php';
$viewObject = new ItemViewPackage($_GET['page']);
$helper = new ViewObjectHelper($viewObject);
然后你可以使用$this-> propertyName从Helper对象中访问$viewObject.
至于减少数据库的负载:这是一个已解决的问题. Consider using a cache.
内容总结
以上是互联网集市为您收集整理的避免单类PHP的多类实例化?全部内容,希望文章能够帮你解决避免单类PHP的多类实例化?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。