birlikte iki sınıfın örneğini oluşturmak

2 Cevap php

Im trying to display two list: one for categories and brand but only the categories are being displayed. And when I remove the code for categories, the brands are being displayed. Is it because it is not possible to create instances of two classes in the same php page? In index.php:

 <?php 
 $obj = new CategoryList();
 if (method_exists($obj, 'init'))
 {  

     $obj->init();
 }
for($i = 0;$i< count($obj->mCategory); $i++)
{
    echo "<a href=''>";
    echo $obj->mCategory[$i]['name']. "<br/>";
    echo "</a>"; 
} 

$obj2 = new BrandList();
if (method_exists($obj2, 'init'))
{
  $obj2->init();
}
for($i = 0;$i< count($obj2->mBrand);$i++)
{
   echo "<a href=''>";
   echo $obj2->mBrand[$i]['name']. "<br/>";
   echo "</a>"; 
    }
 ?>

İşte sınıflar için kod:

class CategoryList
{
    public $mSelectedCategory = 0;
    public $mCategory;


    public function __construct()
    {
        if (isset ($_GET['category_id']))
            $this->$mSelectedCategory = (int)$_GET['category_id'];
    }


    public function init()
    {
        $this->mCategory = Catalog::GetCategory();

    }


}

?>

<?php

class BrandList
{
    public $mSelectedBrand = 0;
    public $mBrand;


    public function __construct()
    {
        if (isset ($_GET['brand_id']))
            $this->$mSelectedBrand = (int)$_GET['brand_id'];
    }


    public function init()
    {
        $this->mBrand = Catalog::GetBrand();

    }


}

?>

Belki bu yardımcı olabilir:

class Catalog
{
    //get id and name of category
    public static function GetCategory()
    {
        $sql = 'CALL catalog_get_category_list()';
        return DatabaseHandler::GetAll($sql);

    }

public static function GetBrand()
{
    $sql = 'CALL catalog_get_brands_list()';
    return DatabaseHandler::GetAll($sql);

}

}

DatabaseHandler sınıfta:

 public static function GetAll($sqlQuery, $params = null, $fetchStyle = PDO::FETCH_ASSOC)
        {
            $result = null;
            try
            {
                $database_handler = self::GetHandler();
                $statement_handler = $database_handler->prepare($sqlQuery);
                $statement_handler->execute($params);
                $result = $statement_handler->fetchAll($fetchStyle);



            }
            catch(PDOException $e)
            {
                self::Close();
                trigger_error($e->getMessage(), E_USER_ERROR);

            }
            return $result;
        }

2 Cevap

You can instantiate dozens/hundreds/X of objects of any kind within the same php instance.
Use a debugger or add more debug (echo) code to find the error.

örneğin iki sınıfın bu kukla uygulamasını kullanarak

class CategoryList {
  public $mCategory=null;
  public function init() {
    $this->mCategory = array(
      array('name'=>'Cat A'),
      array('name'=>'Cat B'),
    );
  }
}

class BrandList {
  public $mBrand=null;
  public function init() {
    $this->mBrand = array(
      array('name'=>'Brand A'),
      array('name'=>'Brand B'),
    );
  }
}

kodunuzu baskılar

<a href=''>Cat A<br/></a><a href=''>Cat B<br/></a><a href=''>Brand A<br/></a><a href=''>Brand B<br/></a>

herhangi bir sorun olmadan.

Hayır, hatta aynı sınıf için istediğiniz sayıda kopyasını oluşturabilirsiniz. Senin iki sınıfları birbirinden bağımsız sizin komut dahil olduğundan emin olun.