【帮分析】这样用OOP是错误的吗?PHP的一个OOP报错~

php中文网
发布: 2016-06-23 14:06:38
原创
1314人浏览过

作用:根据指定ID返回数据(网址)
代码:

<?phpclass UrlPath{    protected $db = $GLOBALS['db']; //报错    protected $ecs = $GLOBALS['ecs']; //报错 <b>Parse error</b>:  parse error, unexpected T_VARIABLE in <b>PHPDocument1</b> on line <b>6</b><br />    //表 goods    public function Goods($goods_id)    {        $sql = "SELECT g.goods_id,c.file_dir,c.parent_id,c.is_show AS c_is_show,g.is_show AS g_is_show ".        " FROM ".self::$ecs->table('goods')." g ".        " LEFT JOIN ".self::$ecs->table('category')." c ON g.cat_id=c.cat_id ".        " WHERE g.goods_id='$goods_id' ";        $rs = self::$db->getRow($sql);        $arr = array();        if(!empty($rs))        {            $arr['savepath'] = ($rs['g_is_show'] == 1 && $rs['c_is_show'] == 1) ? '/product/'.($rs['file_dir'] ? $rs['file_dir']:$rs['cat_id']).'/'.$rs['goods_id'].'.html' : '';            $arr['remoteurl'] = '/goods.php?id='.$rs['goods_id'];        }        return $arr;    }    //表 category    public function Category($cat_id,$page = 1)    {        $sql = "SELECT c.cat_id,c.file_dir,c.parent_id,c.is_show ".        " FROM ".self::$ecs->table('category')." c ".        " WHERE c.cat_id='$cat_id' ";        $rs = self::$db->getRow($sql);        $arr = array();        if(!empty($rs))        {            $arr['savepath'] = $rs['is_show'] == 1 ? '/product/'.($rs['file_dir'] ? $rs['file_dir']:$rs['cat_id']).'/index'.($page > 0 ? '-'.$page:'').'.html':'';            $arr['remoteurl'] = '/category.php?id='.$rs['cat_id'].'&page='.$page;        }        return $arr;    }    //表article    public function Article($article_id)    {        $sql = "SELECT a.article_id,c.cat_id,c.file_dir,c.is_open AS c_is_open ".        " FROM ".self::$ecs->table('article')." a ".        " LEFT JOIN ".self::$ecs->table('article_cat')." c ON a.cat_id=c.cat_id ".        " WHERE a.article_id='$article_id' ";        $rs = self::$db->getRow($sql);        $arr = array();        if(!empty($rs))        {            $arr['savepath'] = $rs['is_open'] == 1 ? '/article/'.($rs['file_dir'] ? $rs['file_dir']:$rs['cat_id']).'/'.$rs['article_id'].'.html' : '';            $arr['remoteurl'] = '/article.php?id='.$rs['article_id'];        }        return $arr;    }    //表    public function ArticleCat($cat_id,$page = 1)    {        $sql = "SELECT c.cat_id,c.file_dir,c.parent_id ".        " FROM ".self::$ecs->table('article_cat')." c ".        " WHERE c.cat_id='$cat_id' ";        $rs = self::$db->getRow($sql);        $arr = array();        if(!empty($rs))        {            $arr['savepath'] = '/article/'.($rs['file_dir'] ? $rs['file_dir']:$rs['cat_id']).'/index'.($page > 0 ? '-'.$page:'').'.html';            $arr['remoteurl'] = '/article_cat.php?id='.$rs['cat_id'].'&page='.$page;        }        return $arr;    }}
登录后复制



用法:
$arr = UrlPath::Goods(1024);print_arr($arr);
登录后复制


另外:开头有一个报错,不能这样写?  procted $db = $GLOBALS['db'];


提问:
一:我想使用UrlPath::Goods($goods_id) 这样的方式获得指定的网址和静态地址,
如何在“类” UrlPath 中不初始化这个类就可以使用公用的 $db 和 $ecs ? 

二:我的这个写法是不是有点问题?~ 另外那里为什么会报错了?以前貌似可以这样写。?



挖错网
挖错网

一款支持文本、图片、视频纠错和AIGC检测的内容审核校对平台。

挖错网 28
查看详情 挖错网

回复讨论(解决方案)

类变量不能使用变量的值来声明,需要额外写一个架构函数__construct来赋值

楼上说的对。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号