喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
 15  1/2  1  2  > 
     
标题: [讨论] PHP真正面向对象的代码  
 
void
注册会员
Rank: 2



UID 93558
精华 0
积分 70
帖子 78
金钱 70 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-24
状态 离线
[广告]: q m
PHP真正面向对象的代码

<?
class EBook
{
        public  $ctx     = null;      //控制器对象
        private $input   = null;      //用户输入
        private $dao     = null;      //业务逻辑对象
        private $factory = null;      //类厂对象

        //+------------------------------------------------------------------------------------------------------------
          //Desc:类的构造子(对象初始化)
        public function __construct($factory)
        {
                $this->factory     = $factory;
                $login = $factory->getObject('loginDao');
                $login->isLogin();                               //登录检查
                $this->input       = $factory->getObject('in')->dataInput;
                $this->dao         = $factory->getObject('ebook');
                $this->dao->userId = $login->getUserId();
                $this->dao->input  = $this->input;               
        }

        //+----------------------------------------------------------------------------------------------------------
          //Desc:类的析构方法(负责资源的清理工作)
        public function __destruct()
        {       
                $this->ctx     = null;
                $this->dao     = null;
                $this->input   = null;
                $this->factory = null;
        }

        //+------------------------------------------------------------------------------------------------------------
          //Desc:入口方法(外部接口)
        public function app()
        {
                $action = $this->ctx->methodInvoke($this,$this->input["action"]);  //(安全上下文检查)
                $this->$action();
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:添加一个电子楼书
        private function add()
        {
                if(isset($_POST)&&!empty($_POST))
                {                       
                        if($this->dao->save())
                        {
                                $this->factory->getObject('msg')->showMsgBox("操作成功","index.php?mod=EBook&action=displayList");
                        }
                        else
                        {
                                $this->factory->getObject('msg')->showMsgBox("操作失败,请重试","index.php?mod=EBook&action=add");
                        }
                }
                else
                {
                        $tpl = $this->factory->getObject("tpl");
                        $tpl->display("EBook/addBook.html");
                }               
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:更新指定ID的电子楼书
        private function edit()
        {
                if(isset($_POST)&&!empty($_POST))
                {
                        if($this->dao->update())
                        {
                                $this->factory->getObject('msg')->showMsgBox("操作成功","index.php?mod=EBook&action=displayList");
                        }
                        else
                        {
                                $this->factory->getObject('msg')->showMsgBox("操作失败,请重试","index.php?mod=EBook&action=displayList");
                        }
                }
                else
                {
                        $data = $this->dao->get();

                        $tpl = $this->factory->getObject("tpl");
                        $tpl->assign("id",$data['ID']);
                        $tpl->assign("userId",$data['UserID']);
                        $tpl->assign("name",$data['Name']);
                        $tpl->assign("imgUrl",$data['ImgUrl']);
                        $tpl->assign("buildArea",$data['BuildArea']);
                        $tpl->assign("insideArea",$data['InsideArea']);
                        $tpl->assign("outArea",$data['OutArea']);
                        $tpl->display("EBook/editBook.html");
                }
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:删除指定ID的电子楼书
        private function remove()
        {
                if(isset($_GET["id"])&&!empty($_GET["id"]))
                {
                        if($this->dao->remove())
                        {
                                $this->factory->getObject('msg')->showMsgBox("操作成功","index.php?mod=EBook&action=displayList");
                        }
                        else
                        {
                                $this->factory->getObject('msg')->showMsgBox("操作失败,请重试","index.php?mod=EBook&action=displayList");
                        }
                }
        }

        //+--------------------------------------------------------------------------------------------------------
          //Desc:显示电子楼书列表
        private function displayList()
        {
                extract($this->input,EXTR_OVERWRITE);
                $this->dao->para['url']      = isset($keyWord) ? "index.php?mod=EBook&action=displayList&keyWord=$keyWord" : "index.php?mod=EBook&action=displayList";
                $this->dao->para['pageRows'] = 10;               
                $data = isset($keyWord) ? $this->dao->search() : $this->dao->getList();

                $tpl = $this->factory->getObject("tpl");
                $tpl->assign("list",$data[0]);
                $tpl->assign("pageNav",$data[1]);
                $tpl->display("EBook/displayBookList.html");
        }
}
?>
2008-4-30 12:00 PM#1
查看资料  发短消息  顶部
 
玉面修罗
金牌会员
Rank: 6Rank: 6


UID 78111
精华 1
积分 1561
帖子 1588
金钱 1551 喜悦币
威望 10
人脉 0
阅读权限 70
注册 2006-8-11
状态 离线
[推荐阅读] 【北京橙天华音音乐制作有限公司招聘】PHP开发工程师
没有接口,没有抽象类,不算真正的面向对象设计。



PHPthink.com
待业中...
2008-4-30 12:04 PM#2
查看资料  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 11758
帖子 4930
金钱 11755 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 【最新招聘信息】著名IT企业最新招聘信息!!!
没有算和不算之分 ood不过是一种思想 这种思想应用到何种程度都是可以叫做ood
就像猪肉炖粉条有很多做法 挑一种自己爱吃的就行了 何必在意哪种是“真正的”的猪肉炖粉条




最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2008-4-30 01:51 PM#3
查看资料  Blog  发短消息  顶部
 
玉面修罗
金牌会员
Rank: 6Rank: 6


UID 78111
精华 1
积分 1561
帖子 1588
金钱 1551 喜悦币
威望 10
人脉 0
阅读权限 70
注册 2006-8-11
状态 离线
[推荐阅读] 麻烦谁帮忙破解一段代码
ood的精髓是抽象化
抽象化的方式一般是接口和抽象类
这里没有看到任何抽象化设计。




PHPthink.com
待业中...
2008-4-30 01:58 PM#4
查看资料  发短消息  顶部
 
dzjzmj
中级会员
Rank: 3Rank: 3
老会员



UID 25675
精华 0
积分 359
帖子 554
金钱 359 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-1-9
来自 福建福州
状态 离线
[推荐阅读] 有人用Aptana吗??
嗯,不错。。。。。。。。。



PHP代码教程,一个留言本引发的教程http://coderhome.net/
2008-4-30 02:03 PM#5
查看资料  访问主页  发短消息  QQ  顶部
 
void
注册会员
Rank: 2



UID 93558
精华 0
积分 70
帖子 78
金钱 70 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-24
状态 离线
[推荐阅读] php新手
这个是表示层的东西,偶把业务逻辑层发来让大家看
2008-4-30 02:52 PM#6
查看资料  发短消息  顶部
 
void
注册会员
Rank: 2



UID 93558
精华 0
积分 70
帖子 78
金钱 70 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-24
状态 离线
[推荐阅读] 北京彬蓝科技 高薪诚聘php开发人员 (北京 )
<?
class EBookDAO implements IDAO
{
        private $db      = null;    //数据访问对象
        private $dt      = null;    //数据表集合
        public  $userId  = 0;       //用户ID
        public  $para    = array(); //参数数组
        public  $input   = null;    //用户输入
        private $factory = null;    //类厂对象

        //+------------------------------------------------------------------------------------------------------------
          //Desc:类的构造子(对象初始化)
        public function __construct($factory)
        {
                $this->factory = $factory;
                $this->db      = $factory->getObject("mysql");
                $this->dt      = $factory->getObject('config')->getTable();
        }

        //+----------------------------------------------------------------------------------------------------------
          //Desc:类的析构方法(负责资源的清理工作)
        public function __destruct()
        {       
                $this->db      = null;
                $this->dt      = null;
                $this->input   = null;
                $this->para    = null;
                $this->userId  = null;
                $this->factory = null;
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:添加一个电子楼书
        public function save()
        {
                $ebook  = $this->dt['ebook'];
                extract($this->input,EXTR_OVERWRITE);               

                $sql = "insert into $ebook(UserID,Name,ImgUrl,Created) values ";
                $sql .= "('$this->userId','$name','$imgUrl','".time()."')";
               
                return $this->db->execute($sql);
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:更新指定ID的电子楼书
        public function update()
        {
                $ebook  = $this->dt['ebook'];
                extract($this->input,EXTR_OVERWRITE);

                $sql = "update $ebook set Name='$name',ImgUrl='$imgUrl' where ID='$id' and UserID='$this->userId'";

                return $this->db->execute($sql);
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:删除指定ID的电子楼书
        public function remove()
        {
                $ebook  = $this->dt['ebook'];
                extract($this->input,EXTR_OVERWRITE);
                $dataId = is_array($id) ? implode(",",$id) : $id;
                $sql = "delete from $ebook where ID in ($dataId)";

                return $this->db->execute($sql);
        }

        //+---------------------------------------------------------------------------------------------------------
          //Desc:得到指定ID的电子楼书信息
        public function get()
        {
                $ebook  = $this->dt['ebook'];
                extract($this->input,EXTR_OVERWRITE);

                $sql = "select * from $ebook where ID='$id' and UserID='$this->userId'";
                $result = $this->db->execute($sql);
               
                return $this->db->fetchRow($result);
        }

        //+--------------------------------------------------------------------------------------------------------
          //Desc:得到电子楼书列表
        public function getList()
        {
                $ebook = $this->dt['ebook'];
                extract($this->para,EXTR_OVERWRITE);

                $pageId = isset($_REQUEST['pageId'])?$_REQUEST['pageId']:1;
                $offset = ($pageId-1)* $pageRows;
                $offset = ($offset < 0) ? 0 : $offset;
               
                $sqlCount = "select ID from $ebook where UserID='$this->userId'";
                $sqlQuery = "select * from $ebook where UserID='$this->userId' order by ID desc limit $offset,$pageRows";
                $rowCount = $this->db->getRows($sqlCount);
                $pageNav = $this->factory->getObject('pageNav');
                $pageNav->pageStyle = 1;
                $navTxt = $pageNav->page($rowCount,$pageRows,$url);
                $result = $this->db->execute($sqlQuery);
                $ds = array();
                $arrTemp = array();
                while($row = $this->db->fetchRow($result))
                {
                        $ds[] = $row;
                }       
                $arrTemp[] = $ds;
                $arrTemp[] = $navTxt;
                unset($ds);
                return $arrTemp;
        }

        //+-----------------------------------------------------------------------------------------------------------
          //Desc:通过关键字搜索电子楼书
        public function search()
        {
                $ebook = $this->dt['ebook'];
                extract($this->para,EXTR_OVERWRITE);
                extract($this->input,EXTR_OVERWRITE);

                $pageId = isset($_REQUEST['pageId'])?$_REQUEST['pageId']:1;
                $offset = ($pageId-1)* $pageRows;
                $offset = ($offset < 0) ? 0 : $offset;
               
                $sqlCount  = "select ID from $ebook where UserID='$this->userId' and Name like '%$keyWord%'";
                $sqlQuery  = "select * from $ebook where UserID='$this->userId' and Name like '%$keyWord%' order by ID desc limit $offset,$pageRows";
               
                $rowCount = $this->db->getRows($sqlCount);

                $pageNav = $this->factory->getObject('pageNav');
                $pageNav->pageStyle = 1;
                $navTxt = $pageNav->page($rowCount,$pageRows,$url);

                $result = $this->db->execute($sqlQuery);
                $ds = array();
                $arrTemp = array();

                while($row = $this->db->fetchRow($result))
                {
                        $ds[] = $row;
                }
                $arrTemp[] = $ds;
                $arrTemp[] = $navTxt;
                unset($ds);
               
                return $arrTemp;
        }
}
?>
2008-4-30 02:55 PM#7
查看资料  发短消息  顶部
 
void
注册会员
Rank: 2



UID 93558
精华 0
积分 70
帖子 78
金钱 70 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-5-24
状态 离线
[推荐阅读] 怎么过滤内容中的DIV、
模型抽象层

interface IDAO
{
        public function save();      //新增数据
        public function update();    //更新数据
        public function get();       //获取指定ID的数据
        public function remove();    //删除指定ID的数据
        public function getList();   //获取数据列表
        public function search();    //搜索
}
2008-4-30 02:59 PM#8
查看资料  发短消息  顶部
 
x
新手上路
Rank: 1



UID 100704
精华 0
积分 26
帖子 17
金钱 26 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-11-5
状态 离线
[推荐阅读] 5k+招杭州phper高手
归根结底是设计模式
2008-4-30 03:47 PM#9
查看资料  发短消息  顶部
 
玉面修罗
金牌会员
Rank: 6Rank: 6


UID 78111
精华 1
积分 1561
帖子 1588
金钱 1551 喜悦币
威望 10
人脉 0
阅读权限 70
注册 2006-8-11
状态 离线
[推荐阅读] 客户端内存泄露问题,大家有何高见?
更归根结底所有设计模式其实只是为了满足面向对象设计的那几个基本原则



PHPthink.com
待业中...
2008-4-30 04:07 PM#10
查看资料  发短消息  顶部
 15  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.032868 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP