简体   繁体   English

php5从对象访问另一个类

[英]php5 access another class from an object

I'm new to OOP. 我是OOP的新手。 I created this class called Site that is extended but many other classes with common queries and excutions. 我创建了一个名为Site的类,该类已扩展,但还有许多其他具有常见查询和执行的类。 This particular class "Pagination" , I need its methods to be accessed from other instances and access to data sent to it "internally". 这个特殊的类“ Pagination”,我需要从其他实例访问它的方法并“内部”访问发送给它的数据。 It's probably bad written but I'd like some help. 可能写得不好,但我需要一些帮助。

<?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 CODE PHP代码

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

Once I did this, how do I access htmlPagination with the data processed in the Products instance? 完成此操作后,如何使用Products实例中处理的数据访问htmlPagination

You could set the pagination as a field of the products object and retrieve it with a get method or by defining it as public and reading it directly. 您可以将分页设置为products对象的字段,并使用get方法对其进行检索,或者将其定义为public并直接读取它。

In products: 在产品中:

class Products 
{
    ...
    private $pagination;

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

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

Then later: 然后再:

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

to retrieve the html pagination. 检索html分页。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM