> 백엔드 개발 > PHP 튜토리얼 > 【帮分析】这样用OOP是错误的吗?PHP的一个OOP报错~

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-23 14:06:38
원래의
1069명이 탐색했습니다.

作用:根据指定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 ? 

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




回复讨论(解决方案)

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

楼上说的对。

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿