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!