[英]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.