Autor Tema: [DUDA] Error al llamar una clase  (Leído 1073 veces)

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
[DUDA] Error al llamar una clase
« en: 19 de Mayo de 2010, 12:51:42 pm »

Hola, pues empezando a estudiar POO, quería obtener un ejemplo claro y simple y me fijé en la firma de Focux que tenía un ejemplo. Pues intentando aprender, me lo estudié primero y luego lo intente hacer solito y claro, llega el problema. Lo hago y me sale error; me fijo en la firma de
Focux y en realidad todo está clavado solo que cambian los nombres.


<?
class 
miClase{
	
var 
$uno;
	
var 
$dos;
private function 
Siquillote() {
	
$this->uno="Numero 1";
	
$this->dos=" Y este el numero 2";
	

}}
?>
<?php
$todo 
= new miClase();
$todo-> Siquillote();
echo 
$todo->uno.$todo->dos;
?>


Entonces, al subirlo al servidor, me sale este error : Fatal error: Call to private method miClase::Siquillote() from context '' in /var/www/vhost/cpsiquillote.es/home/html/otro/numeros.php on line 19

¿Alguien me ayuda? :$

#Fdo. Physlet

Comunidad PHPeros

[DUDA] Error al llamar una clase
« en: 19 de Mayo de 2010, 12:51:42 pm »

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re:[DUDA] Error al llamar una clase
« Respuesta #1 en: 19 de Mayo de 2010, 12:55:45 pm »
La respuesta es obvia, no puedes llamar a funciones privadas desde fuera de la clase...

Para poder llamar a una funcion desde fuera tienes que definirla como public.
Por favor, leete las Normas


Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[DUDA] Error al llamar una clase
« Respuesta #2 en: 19 de Mayo de 2010, 13:16:37 pm »
La respuesta es obvia, no puedes llamar a funciones privadas desde fuera de la clase...

Para poder llamar a una funcion desde fuera tienes que definirla como public.

Si, es cierto ha sido un error garrafal mio. Focux lo tenía como public y no se como he llegado a poner private ¿La subsconciencia?  :confused:,
gracias Naveda :P

#Fdo. Physlet

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[DUDA] Error al llamar una clase
« Respuesta #3 en: 19 de Mayo de 2010, 20:35:57 pm »
Si, es cierto ha sido un error garrafal mio. Focux lo tenía como public y no se como he llegado a poner private ¿La subsconciencia?  :confused:,
gracias Naveda :P
Sucede que cuando pones la función privada sólo puedes acceder desde la misma clase. De paso gracias por intentar aprender con mi firma  :-[.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:[DUDA] Error al llamar una clase
« Respuesta #4 en: 19 de Mayo de 2010, 20:39:30 pm »
Sucede que cuando pones la función privada sólo puedes acceder desde la misma clase. De paso gracias por intentar aprender con mi firma  :-[.

:confused:, de nada :P jajaja!

Lo que no llego a entender es como he puesto private si ni sabía que podía ponerse private  :confused:

#Fdo. Physlet

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[DUDA] Error al llamar una clase
« Respuesta #5 en: 19 de Mayo de 2010, 20:49:21 pm »
Talvez como viste "public" tu subconsciente te quizo traicionar y te engañó a que pusieras public (?).
Naah es broma.

Como recomendación:

No hace falta el poner "public" antes de cada función pública, debido a que el navegador sobreentiende que el método es público y puede ser sacado de la clase.
- Moderador de PHP


Desconectado Rodrinete

  • PHPer@ Fijo
  • ***
  • Mensajes: 222
  • Karma: 6
    • Ver Perfil
Re:[DUDA] Error al llamar una clase
« Respuesta #6 en: 19 de Mayo de 2010, 20:56:03 pm »
Talvez como viste "public" tu subconsciente te quizo traicionar y te engañó a que pusieras public (?).
Naah es broma.

Como recomendación:

No hace falta el poner "public" antes de cada función pública, debido a que el navegador servidor sobreentiende que el método es público y puede ser sacado de la clase.
No te olvides que PHP es un lenguaje server-side, es decir, lo procesa el servidor y devuelve el contenido al cliente que lo interpretara el navegador.

No confundir servidor con navegador :P


Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[DUDA] Error al llamar una clase
« Respuesta #7 en: 21 de Mayo de 2010, 14:40:29 pm »
Ups, se me fué xD
- Moderador de PHP


Desconectado Physlet

  • PHPero Experto
  • *****
  • Mensajes: 822
  • Karma: 41
  • Sexo: Masculino
  • Todo es posible con esfuerzo, dedicación e interés
    • Ver Perfil
    • PanamaDev
Re:[DUDA] Error al llamar una clase
« Respuesta #8 en: 21 de Mayo de 2010, 20:01:23 pm »
Como recomendación:
No hace falta el poner "public" antes de cada función pública, debido a que el servidor sobreentiende que el método es público y puede ser sacado de la clase.
Yo pienso que independientemente de si el servidor lo reconozca como público al no colocar modo de acceso, debería colocarse... No sé, yo por mi parte prefiero hacerlo así, sobre todo porque cuando necesite aplicar otros lenguajes como Java o C++, no me pase que por ejemplo en C++ al no colocar nada, lo reconozca como privado (eso me han comentado), a diferencia de Java que también lo reconoce como público y de esta manera no confundirme jeje...

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[DUDA] Error al llamar una clase
« Respuesta #9 en: 22 de Mayo de 2010, 11:13:30 am »
Lo mejor sin duda es especificarlo siempre, así se ayuda también a potenciar la lectura del código y te adaptas más al modo de programar de la comunidad PHP.

Hay una convención entre programadores PHP sobre como escribir el código para fomentar su lectura, compresión y demás. Entre muchisimas otras, esta es una de las cosas que se mencionan, el poner public aunque no sea necesario.

Por si alguien tiene curiosidad:
http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft)

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es