Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/05/2012, 10:34
miwelillo
 
Fecha de Ingreso: junio-2008
Mensajes: 175
Antigüedad: 15 años, 10 meses
Puntos: 11
Problema con herencia

Hola a todos,

Estoy creando una serie de clases bastante sencillas pero cuando aplico herencia no consigo que me funcionen los metodos de la clase padre.

La clase padre es 'Categoria' mientras que la clase hija es 'Articulo', simplemente defino un metodo llamado showCategories() en la clase padre para mostrar una lista de categorias y en la clase hijo llamo a este metodo a la hora de mostrar un formulario pero por algun motivo cuando llega a la parte en que se llama al metodo, se rompe la ejecucion y no me muestra nada mas:

Categoria.class.php
Código PHP:
<?php
class Categoria{
        
        private 
$category_items = array();

        public function 
showCategories($id NULL){
            if(!isset(
$id)){
                
$sql sprintf("SELECT * FROM categories ORDER BY id_category DESC");
            }
            else{
                
$sql sprintf("SELECT * FROM categories WHERE id_category = '%s' ORDER BY id_category DESC"mysql_real_escape_string($id));
            }
            
$result mysql_query($sql);
            while(
$fila mysql_fetch_assoc($result)){
                
$this->category_items[] = $fila;
            }
            return 
$this->category_items;
        }
?>
Articulo.class.php
Código PHP:
<?php
require_once('categoria.class.php');
    
    class 
Articulo extends Categoria{
        
        private 
$articulo = array();

        public static function 
showInsertArticuloForm($id NULL$name NULL$code NULL$active NULL$desc NULL){
            
            echo 
"
                <form method='post' action='insert-article.php' name='fInsertArticle'>"
;
                if(isset(
$id))
                    echo 
"<input type='hidden' name='id_art' value='".$id."' />";
                    echo 
"<p>Name: <input type='text' name='art_name' size='35' ";
                    if(isset(
$name)) echo "value='".$name."'";
                    echo 
"/></p>
                    <p>Code: <input type='text' name='art_code' size='36' "
;
                    if(isset(
$code)) echo "value='".$code."'";
                    echo 
"/></p>
                    <p>Active?: <input type='checkbox' name='art_active' "
;
                    if(isset(
$active)) echo "checked='checked'";
                    echo 
"/></p>
                    <p>Category for this item:
                        <select name='art_cat'>"
;
                    
                    
// Heredado de Categoria, aqui es donde falla
                    
$cat_items parent::showCategories();
                    for(
$i 0$i count($cat_items); $i++){
                        echo 
"<option value='".$cat_items[$i]['id_category']."'>".$cat_items[$i]['name_category']."</option>";
                    }
                    
                    echo     
"</select>
                    </p>
                    <p>Description: </p>
                    <p><textarea name='art_desc' id='art_desc' rows='30' cols='60'>"
;
                    if(isset(
$desc)) echo stripslashes($desc);
                    echo 
"</textarea></p>
                    <input type='button' value='Insert New Item' onClick='checkInsertArticleForm();' class='submit' />
                </form>
            "
;
        }
?>
Donde he puesto el comentario se rompe la ejecucion y no sigue mostrando datos. Comentar tambien que he probado con $this->showCategories() tambien pero no funciona de igual manera (aunque el Komodo me reconoce las funciones heredadas de la clase padre). El metodo showCategories() por si solo funciona perfectamente ya que lo uso en otra pagina y me muestra las categorias sin problemas por lo que no se me ocurre que puede ser

Un saludo y gracias de antemano!