php5从一个对象访问另一个类

时间:2011-08-02 17:26:24

标签: php oop class

我是OOP的新手。我创建了这个名为Site的类,它被扩展但许多其他类具有常见的查询和提供。 这个特殊的类“分页”,我需要从其他实例访问它的方法并访问“内部”发送给它的数据。这可能写得不好但我想要一些帮助。

<?php

    class Site {
        public $lang;
        public $user_agent;
        public $user_lang;
        public $url;
        public $bots;

        public $total_items;
        public $itemsPerPage;
        public $page;

 class Products extends Site {      
            function getProducts($last = false,  $id = false, $cat = false, $active_only = false, $lang_pref = false, $itemsPerPage = false, $page =false){

            //code

            //prepare paging 
            if(!empty($itemsPerPage)){

                //count total product
                $count = mysql_query(
                "SELECT COUNT(*)  
                FROM products_list
                 ".@$cat_to_choose."
                 ".@$lang."
                ")
                or die(mysql_error());

                $count = mysql_fetch_row($count);
                $total_items = $count[0];

                // set vars for Pagination class
                $this->total_items = $total_items;
                $this->itemsPerPage = $itemsPerPage;
                $this->page = mysql_real_escape_string($page); 

                //send data to class Pagination
                $pagination = new  Pagination();
                $start = $pagination->createPagination();

                $limit = "LIMIT ".$start.", ".$itemsPerPage;

            }

                      //code
        }




            //other classes

    class Pagination extends Site {


         function createPagination(){

            // get total pages by dividing 
            $this->total_pages = $this->total_items/$this->itemsPerPage;

            //round to highest integer
            $this->total_pages= ceil($this->total_pages);

            switch($this->page){
                case "0":
                case null:
                case "1":
                    $start = 0;
                    break;
                default :
                    $start = ($this->page-1)*($this->itemsPerPage);

                    break;

            }

            return $start;

        }

        public function htmlPagination(){
            if($this->page == 0){
                $this->page = 1;
            }
            $pagination = array(
                    "total_pages" => $this->total_pages,
                    "current_page" => $this->page,
                    "total_items" => $this->total_items
            );

            return $pagination;

        }

    }
    }

PHP代码

$products_object= new Products();
$products = $products_object->getProducts(false,false,$cat, true, $site->lang, $itemsperpage, @$_GET["pag"]);

完成此操作后,如何使用Products实例中处理的数据访问htmlPagination

1 个答案:

答案 0 :(得分:1)

您可以将分页设置为products对象的字段,并使用get方法或将其定义为public并直接读取它来检索它。

产品:

class Products 
{
    ...
    private $pagination;

    public function getProducts(...)
    {
        ...
        $this->pagination = new Pagination();
        ...
    }

    public function getPagination()
    {
        return $this->pagination;
    }
}

然后:

$product->getPagination()->htmlPagination();

检索html分页。