A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Introducci贸n a clases y objetos

6/19
Recursos

Aportes 97

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Como observaci贸n鈥 el orden de los include afecta 鈥 ya que si ponemos de la siguiente forma, marcara un Fatal Error, quiero pensar que es porque lee primero la clase admin sin tener person y user antes

<?php
include './clases/admin.php';
include './clases/person.php';
include './clases/user.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();```

Como adelanto, para los que se asusten al leer 鈥渆xtends鈥 y digan 鈥溌縌U脡 ES ESTO? 驴WTF? 驴COMO QUE EXTENDS?鈥

Hace referencia a una cosa muy bonita de la Programaci贸n Orientada a Objetos que se llama 鈥淗erencia鈥 que, of course, se explica m谩s adelante en este curso :3

Introducci贸n a clases y objetos


La clase es el molde con el cual crearemos nuestros objetos. Para crear una clase y despu茅s un objeto lo hacemos as铆:

<?php

class User {
    public $type;
}

class Admin {
    public function greet() {
        return "Hola admin";
    }
}

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Y despu茅s partirlos en m贸dulos:

  • index.php
<?php

require_once './person.php';
require_once './user.php';
require_once './admin.php';

$usuario = new User;
$usuario->type = new Admin;
echo $usuario->type->greet();
  • person.php
<?php

class Person {
    public function greet() {
        return "Hola $this->name";
    }
}
  • user.php
<?php

class User {
    public $type;
}
  • admin.php
<?php

class Admin extends Person {
    public $name = 'Administrador';
}

index.php

<?php
include './clases/person.php';
include './clases/user.php';
include './clases/admin.php';


$user = new User;
$user->type = new Admin;
echo $user->type->greet();

person.php

<?php
class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

user.php

<?php
class User
{
    public $type;
}

admin.php

<?php

class Admin extends Person
{
    public $name = "Administrador";
}

馃樀驴Qu茅 es la Poo?

La Poo es una paradigma que nos permite mapear objetos reales al mundo digital. 馃殌

馃驴Qu茅 es una clase?

Una clase es una un 鈥淢olde鈥 para crear objetos, la cual esta compuesta por atributos y m茅todos. 馃槸

馃敵驴Qu茅 es un objeto?

Son entidades que tienen un determinado estado, comportamiento e identidad.馃槑
Es el resultado de la instancia de una clase.

馃槯驴A que se refieren con instancia?

Se refiere a la actividad de crear un objeto mediante la lectura, recuperaci贸n de los atributos de una clase.馃ぉ

Sigo desde hace tiempo a Italo y en ningun curso puede faltar el clasico ejemplo del blog y los post xD Que buen profe 馃槂

Cuando divides el c贸digo en varios archivos, ya no necesitas incluir Person.php en el principal. Porque Admin.php se encarga de tomar los datos de Person.php.
Aqu铆 el c贸digo:

.
INDEX.PHP

<?php

include 'User.php';
include 'Admin.php';

//creo un objeto de tipo USER
$Usuario = new User;  
//uso una variables propias de User y le asigno un objeto ADMIN
$Usuario->type = new Admin;
//mando a pantalla la funcion greep que viene de Admin y Admin la toma de Person
echo $Usuario->type->greep(); 

PERSON.PHP

<?php

class Person{
    public function greep(){
        return "Hola $this->name";
    }
}

USER.PHP

<?php
// include 'User.php';
// include 'Admin.php';
class User{
    public $type;
} 

ADMIN.PHP

<?php

include 'Person.php';

class Admin extends Person{
    public $name = "Administrador";
}

馃幆 La palabra reservada class nos permite declarar una clase. Por otro lado extends hace referencia a la herencia.

Index.php

<?php

require_once('./classes/User.php');
require_once('./classes/Admin.php');


$user = new User;
$user->type = new Admin;

echo $user->type->greet();

User.php

<?php

class User
{
  public $type;
}

Admin.php

<?php

require_once('Person.php');

class Admin extends Person
{
  public $name = 'Administrador';
}

Person.php

<?php

class Person
{

  public function greet()
  {
    return "Hola, $this->name";
  }

}

como Dice Anuar Rodr铆guez el orden si afecta

<?php

require('./clases/Person.php');
require('./clases/User.php');
require('./clases/Admin.php');
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h2>
        <?php
        $user = new User;
        $user->type = new Admin;

        echo $user->type->greet();
        ?>
    </h2>
</body>

</html>```

Resultado en index.php con el codigo segmentado

<?php

require 'user.php';
require 'admin.php';

$user = new User;
$user->type = new Admin;

echo $user->type->greet();

Mi humilde aporte.

Index.php

<?php

include 'person.php';
include 'user.php';
include 'admin.php';

$user = new user;
$user->type = new Admin;
echo $user->type->greet();


Admin.php

<?php

class admin extends Person
{
    public $name = 'Administrador';
}

Person.php

<?php

class person
{
    public function greet()
    {
        return "Hola $this->name"; 
    }
}


User.php

<?php

class user 
{
    public $type;
}

Aqu铆 est谩 mi aporte.

<?php

include './person.php';
include './user.php';
include './admin.php';

$usuario = new User;
$usuario->type = new Admin;
echo $usuario->type->greet();```

<?php
class Admin extends Person
{
public $name = 鈥楢dministrador鈥;
}




<?php

class Person
{
public function greet()
{
return 鈥淗ola $this->name鈥;
}
}




<?php

class User
{
public $type;
}



<?php

include './person.php';
include './user.php';
include './admin.php';

$usuario = new User;
$usuario->type = new Admin;
echo $usuario->type->greet();```




<?php
class Admin extends Person
{
public $name = 鈥楢dministrador鈥;
}




<?php

class Person
{
public function greet()
{
return 鈥淗ola $this->name鈥;
}
}




<?php

class User
{
public $type;
}



Aqui el peque帽o aporte:

Quiz谩 ya lo habr谩n comentado, pero es muy buena idea empezar con el curso de POO que imparte Anncode.
Mas que nada para tener las bases de la POO.

  • Iniciamos con la Clase Persona la cual tiene como funci贸n saludarnos (greet) podemos entender el return, pero cuando vemos el $this es como鈥 驴Que rayos? y mas cuando vemos que tiene ** -> name **: esto se refiere a los atributos鈥 pero鈥 驴De donde sali贸? Pues sale de la clase Admin que es quien saluda (Cabe recalcar que la clase user tambi茅n puede saludar.)
  • Despu茅s colocaremo a user que en este caso solo se define su tipo (type) entonces se entiende que Persona es el molde (clase Padre) y user y admin son las clases hijas .
  • Eventualmente colocaremos a admin y aqu铆 es donde vemos algo raro, extends o 鈥渉ereda de鈥 (Admin hereda de Persona) y aqu铆 vemos como se hace uso de $name.
  • Para poder imprimir nuestro saludo se deber谩n de colocar las inclusiones que involucran a toda la clase (Se debe de colocar en orden)
  • Para que se entienda un poco mejor.

No suelo hacer muchos aportes, pero si hay algo que corregir, por favor hac茅rmelo saber. 馃構

index.php

<?php
/**
 * Llamando las clases
*/
require_once 'User.php';
require_once 'Admin.php';

/**
 * Creando objetos a partir de las clases
*/
$user = new User;
$user->type = new Admin;

echo $user->type->greet();

User.php

<?php

class User
{
    public $type;
}

Admin.php

<?php

require_once 'Person.php';

class Admin extends Person
{
    public $name = 'Administrador';
}

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

Hola, RETO cumplido!, pero agregue algunas modificaciones para colocar mi aporte a la clase.

No entend铆 cual era el objetivo del archivo User y la class User pero aun as铆 lo inclu铆 en la practica para seguir la linea del profesor.

ARCHIVO(index.php)

<?php

require 'Person.php';
require 'Admin.php';
require 'User.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

#======================
echo "<br>";
#======================

$role = new Admin;
echo $role->greet(3); 

ARCHIVO(Person.php)

<?php

class Person
{
    public function greet($value = 0) // Person.php
    {
        return "Hola " . $this->role[$value];
    }
}

ARCHIVO (Admin.php)

<?php

class Admin extends Person
{
    public $role =[
        'Administrador', 
        'Vendedor', 
        'Gerente', 
        'RRHH'];   
}

ARCHIVO (User.php)

<?php

class User
{
    public $type;
} 

Listo as铆 quedo:

Reto de la clase:

  • index.php
<?php

include 'user.php';
include 'admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();
  • person.php
<?php

class Person
{
    public function greet()
    {
        echo "hola $this->name";
    }    
}
  • User.php
<?php

class User
{
    public $type;
}
  • admin.php
<?php

include 'person.php';

class Admin extends Person
{
    public $name = 'Administrador';
}

index.php

<?php

include 'person.php';
include 'user.php'; 
include 'admin.php';


$user = new User;
$user->type = new Admin;
echo $user->type->greet();
?>

person.php

<?php

class Person {
    public function greet()
    {
        return "Hola $this->name";
    }
}

user.php

<?php

class User
{
    public $type;
}

admin.php

<?php

class Admin extends Person
{
    public $name = 'Administrador';
}

Saludos, por ac谩 dejo mi aporte.

<?php

include 'Person.php';
include 'Admin.php';
include 'User.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

En este caso Inclu铆 persona en administrador para no llamarlo en el index.php y carga bien en mi localhost

Yo justo hice las clases separadas y luego las llame desde el index

Index.php

<?php
include 'User.php';
include 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

User.php

<?php

class User{
    public $type;
}

Admin.php

<?php

include 'Person.php';

class Admin extends Person{
    public $name = 'Administrador';
}

Person.php

<?php

class Person{
    public function greet(){
        return "Hola $this->name";
    }
}```

la clase Person.php la llamo en Admin.php porque ahi esta la extencion de esa clase

<?php 

require_once 'User.php';
require_once 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

archivo Person.php
<?php
include 鈥榓dmin.php鈥;
class Person
{
public function great(){
return 鈥淗ola $this->name鈥;
}
}

archivo Admin.php

<?php
include 鈥楿ser.php鈥;
class Admin extends Person{
public $name = 鈥淎dministrador鈥;
}

archivo User.php

<?php
class User
{
public $type;
}
archivo index.php
<?php

include 鈥楶erson.php鈥;
$user = new User;
$user->type = new Admin;
echo $user->type->great();

Usuario.php

class Usuario
{
    public $tipo;    
}

Persona.php

class Persona
{
    public function saludar()
    {
        return "Hola $this->name";
    }
}

Admin.php

class Admin extends Persona
{
    public $name = "Administrador";
}

Index.php

6. Introducci贸n a clases y objetos

Herencia, Modularidad, Polimorfismo.

  1. Clase: Class
  2. Objeto: New

Les comparto el c贸digo de la clase dividido en 4 archivos.

index.php

<?php

require_once 'Person.php';

require_once 'User.php';

require_once 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php

class User
{
    public $type;
}

Admin.php

<?php

class Admin extends Person
{
    public $name = 'Administrador';
}

馃

no h茅 logrado entenderlo

<require_once('User.php');
require_once('Person.php');
require_once('Admin.php');

$user = new User;
$user->type = new Admin;
echo $user->type->greet();> 

include(鈥淯ser.php鈥);
include(鈥淧erson.php鈥);
include(鈥淎dmin.php鈥);

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

<?php

include 鈥./admin.php鈥;
include 鈥./person.php鈥;
include 鈥./user.php鈥;

$user = new User;
$user->type = new Admin;

echo $user->type->greet();

?>

<?php

include('person.php');
include('user.php');
include('Admin.php');

$user= new User;
$user->type = new Admin;
echo $user->type->greet();

Aqu铆 va mi aporte comunidad:

Como primer paso cre茅 una carpeta llamada Models

mkdir Models

Segundo paso cree los archivos Person.php y User.php dentro de esa carpeta con sus recpectivos c贸digos

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php

class User
{
    public $type;
}

Despu茅s realic茅 mi clase Admin.php

<?php

include './Models/Person.php';

class Admin extends Person
{
    public $name = 'Administrador';
}

Y por 煤ltimo en mi archivo index dej茅 el siguiente c贸digo

<?php

include './Models/User.php';
include './Models/Admin.php';

$user = new User;

$user->type = new Admin;

echo $user->type->greet();

<?php
include 鈥淧erson.php鈥;
include 鈥淎dmin.php鈥;
include 鈥淯ser.php鈥;
$user = new User;
$user->type = new Admin;
echo $user->type->saludar();

Mi soluci贸n.馃槖

<?php
include "./clasesobjetos/classperson.php"; //En primer lugar por que llama a la funcion greet que esta contenida en el Padre
include "./clasesobjetos/classuser.php";
include "./clasesobjetos/classAdmin.php";


$user= new User;
$user->type = new Admin;
echo $user->type->greet();

index.php

<?php

require_once 'admin.php';
require_once 'person.php';
require_once 'user.php';

// INTANCIAR UN OBJETO
$user = new User;
$user->type = new Admin;
echo $user->type->greet();

?>

person.php

<?php

// CLASES
class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

?>

user.php

<?php

// CLASES
class User
{
    public $type;
}

?>

admin.php

<?php

require_once 'person.php';
// CLASES (herencia)
class Admin extends Person
{
    public $name = 'Administrador';
}

?>

Dejo mi c贸digo, no importo incluyo a person.php, dado que admin.php lo posee incluido.

<?php

include './admin.php';
include './user.php';



$user = new User;
$user->type= new Admin;
echo $user->type->greet();

Mi modo:

Admin.php

<?php
require_once 'Person.php';

class Admin extends Person
{
    public $name = 'Administrador';
}

index.php

<?php
require_once 'User.php';
require_once 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Person.php

<?php
class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php
class User
{
    public $type;
}

Person.php
<?php
class Person
{
public function greet()
{
return 鈥淗ola $this->name鈥;
}
}

Admin.php
<?php
require_once 鈥./Person.php鈥;

class Admin extends Person
{
public $name = 鈥楢dministrador鈥;
}

User.php
<?php
class User
{
public $type;
}

index.php
<?php
require_once 鈥./Admin.php鈥;
require_once 鈥./User.php鈥;

$User = new User;
$User->type = new Admin;

echo $User->type->greet();

Index.php

<?php

require_once 'person.php';
require_once 'user.php';
require_once 'admin.php';

$user = new User;
$user->type = new Admin;
$user->name = 'Jose';
echo $user->type->greet($user->name);

person.php

<?php

class Person
{
  public function greet($name)
  {
    return "Hola $this->rol $name";
  }
}

user.php

<?php

class User 
{
  public $type;
  public $name;
}

Admin

<?php

class Admin extends Person
{
  public $rol = 'Administrador';
}

class person.php

<?php
    class person
    {
        public function saludo(){
            return "HOLA $this->name";
        }
    }
?>

class user.php

<?php
    class user
    {
       public $type;
    }
?>

class admin.php

<?php
    class admin extends person
    {
       public $name = "Administrador";
    }
?>

index.php

<?php

    include 'person.php';
    include 'admin.php';
    include 'user.php';

    $usuario = new user;

    $usuario->type = new admin;

    echo $usuario->type->saludo();

?>

Quise usar lo aprendido en el curso anterior con composer y lo que hemos aprendido hasta ahora en este con un tema un poco diferente para asegurarme de que estaba entendiendo y resulto bien, dejo mi c贸digo por si quieren darle un vistazo y ver algo un tanto diferente siguiendo la filosof铆a del curso

/**
index.php
*/
<?php

require '../vendor/autoload.php';

use MiContexto\WaterType;
use MiContexto\Squirtle;

$pokemon = new WaterType;
$pokemon->monster = new Squirtle;
echo $pokemon->monster->roar();

/**
WaterType.php
*/
<?php

namespace MiContexto;

class WaterType{
	public $monster;
}

/**
Squirtle.php
*/
<?php

namespace MiContexto;
use MiContexto\Pokemon;

class Squirtle extends Pokemon{
	public $name = 'Squirtle';
}

/**
Pokemon.php
*/
<?php

namespace MiContexto;

class Pokemon{
	public function roar(){
		return "$this->name roars";
	}
}

Admin.php

index.php

user.php

Person.php

<?php
include 'User.php';
include 'Person.php';
include 'Admin.php';
include 'SubAdmin.php';

$user = new User;
$user2 = new User;
$user->type = new Admin;
$user2->type = new subAdmin;

echo $user->type->greet().'<br>';
echo $user2->type->greet();

index.php

<?php

include './Person.php';
include './User.php';
include './Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();  //Hola Administrdor

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php

class User
{
    public $type;
}

Admin.php

<?php

class Admin extends Person
{
    public $name = "Administrador";
}

Utilizando psr-4 con composer
//Admin.php
<?php
namespace PooPHP;
class Admin{

public function great(){
	
	echo json_encode(["rta"=>"Hola administrador"]);
	
}

}
//User.php
<?php

namespace PooPHP;
class User extends Admin{
public $user;
}

index.php
<?php
echo 鈥<!DOCTYPE html>
<html lang=鈥渆s鈥>
<head>
<meta charset=鈥淯TF-8鈥/>
<title>POO CON PHP</title>
</head>
<body>鈥;

require_once DIR."/vendor/autoload.php";
use \PooPHP\User;

$alfa= new User;
$alfa->great();

echo 鈥</body>
</html>鈥;

tengo un problema al querer hacer el echo, no me muestra lo que quiere imprimir o un error sino que me muestra en el navegador la porci贸n de c贸digo

Este es el index.php

<?php
require_once './person.php';
require_once './user.php';
require_once './admin.php';


$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Clase person

<?php

class Person
{
    public function greet(){
        return "Hola $this->name";
    }
}

Clase User

<?php

class User
{
    public $type;
}

Clase admin

<?php

class Admin extends Person
{
    public $name = 'Administrador';
}
<?php
require_once "user.php";
require_once "person.php";
require_once "admin.php";
require_once "clients.php";

$type_sesion = "ADMINISTRADOR";

if($type_sesion == "ADMINISTRADOR")
{
    $user = new User;
    $user->type = new Admin;
    echo $user->type->greet();
}elseif($type_sesion == "CLIENTE")
{
    $user2 = new User;
    $user2->type = new Clients;
    echo $user2->type->greet();
}


le agregue un if para poder interactuar y entender mejor esto de las clases

<?php
include './person.php';
include './user.php';
include './admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();```

<?php
require_once 鈥淧erson.php鈥;

class Admin extends Person
{
    public $name = "Administrador";
}

?>

Que significa la flecha ->? Nose si me pase el video donde explican la flecha, el resto lo entiendo perfecto ya que es similar ah JS como instanciar objetos.馃

Excelente clase!

index.php

<?php

include './clases/Person.php';
include './clases/User.php';
include './clases/Admin.php';

$user = new User();
$user->type = new Admin;
echo $user->type->greet();

Admin.php

<?php

class Admin extends Person
{
    public $name = 'Administrador';
}

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php

class User
{
    public $type;
}

aprendi mucho en esta clase

//index.php
<?php
require 'user.php';
require 'admin.php';
$user= new user;
$user->type=new admin;
echo $user->type->greet();

//user.php
<?php
class user
{
    public $type;
}


//persona.php
<?php
class persona
{
    public function greet()
    {
        return "hola $this->name";
    }
}

//admin.php
<?php
require 'persona.php';
class admin extends persona
{
    public $name='administrador';
}

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php

class User
{
    public $type;
}

Admin.php

<?php


class Admin extends Person
{
    public $name = 'Administrador';    
}

Inidex.php

<?php
include 'Person.php';
include 'User.php';
include 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Excelente

<?php

require_once 'Person.php';
require_once 'User.php';
require_once 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();```

Buenas! Comparto las clases y el index.


.
index

<?php


include("Person.php");
include("Admin.php");
include("User.php");

//Creamos un objeto
$user = new User;
//Definimos el tipo de user
$user->type = new Admin;


Person

<?php

class Person 
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User

<?php

class User 
{
    public $type;
}

Admin

<?php 
require_once("Person.php");

class Admin extends Person
{
    public $name = "Administrador";
}

Yo lo realice aplicando la herramienta Composer
User.php

<?php

namespace App;

class User
{
    public $type;
}

Person.php

<?php

namespace App;
class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

Admin.php

<?php

namespace App;
use App\Person;

class Admin extends Person
{
    public $name = 'Administrador';
} 

index.php

<?php
require __DIR__.'/vendor/autoload.php';

use App\User;
use App\Admin;

$user = new User;
$user->type = new Admin;
echo $user->type->greet(); 

![](

index.php

<?php

include './Person.php';
include './Admin.php';
include './User.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

<code> 

Person.php

<?php

class Person
{
    public function greet()
    { 
        return "Hola $this->name";
    }
}
<code> 

Admin.php

<?php

class Admin extends Person
{
    public $name = 'Administrador';
}
<code> 

User.php

<?php
class User
{
    public $type;
}
<code> 

person.php

<?php

    class Person
    {
        public function greet()
        {
            return "Hola $this->name";
        }
    }

user.php

<?php

    class user
    {
        public $type;
    }

admin.php

<?php

    class Admin extends Person
    {
        public $name = "Administrador";
    }

index.php

<?php
    require_once 'user.php';
    require_once 'person.php';
    require_once 'admin.php';

    $user = new User;
    $user->type = new Admin;

    echo $user->type->greet();
<?php
//importaciones de otros archivos
include ('persona.php');
include ('usuario.php');
include ('Admin.php');

//logica
$user = new User;
$user -> type =  new Admin;
echo $user -> type ->greet(); 
<?php

require_once 'persona.php';

class Admin extends Persona{
    public $name = 'administrador';
}
<?php

class User{
    public $type;
}
<?php

class Persona // Person.php
{
    public function greet()
    {
        return "hola $this->name";
    }
}

Apuntes:

<<?php

/**
 * atiende a la instruccion echo $user->type ->greet()
 */
class person //palabra reservada
{
    public function  greet()
  {
    return "Hola $$this->name";
  }
}

/**
 * Crea a $user->type
 */
class User
{
  public $type;
}

 /**
  * Crea $user ->type =new Admin;
  */
 class Admin extends Person
 {

  public $name = 'Administrador';
 }
$user = new User;
$user ->type =new Admin;
echo $user->type->greet();
// Resultado:
//  hola Administrador
// En el hola pone la estructura - "Hola $$this->name"; de la clase person
// En el type, define el tipo de usuario, que seria admin:
// class User {  public $type;}
//$user ->type =new Admin;
// Ya en la clase admin, lo relaciona la clase person.
?>

index.php

<?php
require_once 'User.php';
require_once 'Person.php';
require_once 'Admin.php';

$user = new User;
$user->type = new Admin;

echo $user->type->greet();
<?php
//index.php
ini_set('display_errors', '1');

include('./src/Person.php');
include('./src/User.php');
include('./src/Admin.php');

//crea un nuevo objeto o instancia de la clase
$user = new User;
$user->type = new Admin;
echo $user->type->greet();
<?php
// src/Admin.php
//clase
class Person
{
    //m茅todo
    public function greet()
    {
        return "Hola $this->name";
    }
}
<?php
//src/User.php
class User
{
    public $type;
}
<?php
//src/Admin.php
class Admin extends Person
{
    public $name = 'Administrador';
}```

Muy bueno el curso, 脥talo explica muy bien la teor铆a detr谩s de la POO, sobre todo el funcionamiento de los flujos de acci贸nes que ocurren dentro del sistema.

<?php

include 'Person.php';
include 'User.php';
include 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();```

Mi soluci贸n

// index.php

<?php

require 'person.php';
require 'user.php';
require 'admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

// user.php
<?php

class User {
  public $type;
}


// admin.php
<?php

class Admin extends Person {
  public $name = 'Administrador';
}


// person.php
<?php

class Person {
  public function greet() {
    return "Hola $this->name";
  }
}

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola, $this->name";
    }
}

User.php

<?php

class User
{
    public $type;
}

Admin.php

<?php

include 'Person.php';

class Admin extends Person
{
    public $name = 'Administrador';
}

Index.php

<?php

include 'User.php';
include 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();
  • index.php
<?php


include 'Admin.php';
include 'User.php';



$user = new User;

$user->type = new Admin;

echo $user->type->greet();
  • User.php
<?php

class User
{
    public $type;
}
  • Person.php
<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name"; 
    }
}
  • Admin.php
<?php

include 'Person.php';

class Admin extends Person{
    public $name = 'Administrador';
}

Person.php

Class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

Admin.php

include 'Person.php';

class Admin extends person
{
    public $name = 'Administrador';
}

User.php

include 'Admin.php';

class User
{
    public $type;
}

index.php

include 'User.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Person.php

Class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}```

Admin.php

include 鈥楶erson.php鈥;

class Admin extends person
{
public $name = 鈥楯uan Felipe鈥;
}

User.php

include 鈥楢dmin.php鈥;

class User
{
public $type;
}

index.php

include 鈥楿ser.php鈥;

$user = new User;
$user->type = new Admin;
echo $user->type->greet();



index.php

Person.php

User.php

Admin.php

adem谩s de la herencia (de Person a Admin) la uso del name con el $name (de la linea 7 y 18 respectivmente, en index.php) se hace con variables-variables?

index.php

<?php

require_once './person.php';
require_once './user.php';
require_once './admin.php';

$usuario = new User;
$usuario->type = new Admin;
echo $usuario->type->greet();

person.php

<?php

class Person {
  public function greet() {
    return "Hola $this->name";
  }
}

user.php

<?php

class User {
  public $type;
}

admin.php

<?php

class Admin extends Person {
  public $name = 'Administrador';
}

Introducci贸n a clases y objetos

Se puede resumir que la clase es un molde y a partir de ello puedo crear uno o varios objetos.

Para crear un objeto necesitamos crear una variable la cual utilizar谩 la palabra reservada new para llamar a la clase y crear el objeto almacenado en la variable.

<?php

    class Person
    {
        public function greet(){
        return "Hola $this->name";
        }
    }

    class User
    {
        public $type;
    }

    class Admin extends Person
    {
        public $name  = 'Administrador';
    }

    #VARIABLE PARA CREAR EL OBJETO
    $user = new User;

    # ELEGIMOS PARA QUE EL USUARIO SEA TIPO ADMINSTRADOR
    $user->type = new Admin;

    # LLAMO EL METODO DE SALUDAR
    echo $user->type->greet();
?>

Cumpliendo tuve que usar require_once porque include me genero un conflicto porque lo tetina en el archivo Admin.php

index.php

<?php
require_once 'Clases/Admin.php';
require_once 'Clases/Person.php';
require_once 'Clases/User.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

User.php

<?php

class User
{
    public $type;
}

Person.php

<?php

class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

Admin.php

<?php
require_once("Person.php");

class Admin extends Person
{
    public $name = "Administrador";
}

index

<?php
include 'Person.php';
include 'Admin.php';
include 'User.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();
?>

Person

<?php
class Person{
    public function greet(){
        return "Hola $this->name";
    }
}
?>

Admin

<?php
    class Admin extends Person{
        public $name = "Admin";
    }
?>

User

<?php 
class User{
    public $type;
}
?>

Orden correcto del ejercicio:

<?php

// @alejandro Incluir clases en orden.
require_once('lib/classUser.php');
require_once('lib/classPerson.php');
require_once('lib/classAdmin.php');


// @alejandro Mostrar mensaje.
$user = new User;
$user->type = new Admin;
echo $user->type->greet();```

Si les sale error al momento de correr el c贸digo con las clases separadas por archivo, es debido a que Admin extiende de Person, por lo tanto deben incluir Person.php dentro del archivo de Admin.php, si solo usan include(''), les saldra un warning por redeclaracion, por lo que deben usar require_once('') o include_once('')

![](

![](

![](

![](

Se crean los archivos User.php, Person.php y Admin.php con sus respectivas clases:

User.php

<?php

class User 
{
    public $type;
}

Person.php

<?php

class Person 
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

Admin.php _Utilizo require_once porque el archivo es imprescindible y para evitar la duplicaci贸n de la clase. _

<?php

require_once 'Person.php';

class Admin extends Person 
{
    public $name = 'Administrador';
}

Por 煤ltimo utilizo require porque los archivos son necesarios y sin ellos el programa no debe continuar. Como en este caso el index.php es el archivo que voy a ejecutar puedo evitar el uso de require_once y como Admin.php contempla Person.php, no se requiere en este archivo.
index.php

<?php

require 'User.php';
require 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

Salida:
Hola Administrador

<?php

require_once 鈥./classes/Person.php鈥;
require_once 鈥./classes/Admin.php鈥;
require_once 鈥./classes/User.php鈥;

$user = new User;
$user->type = new Admin;
echo $user->type->greet();

<?php

include 鈥楶erson.php鈥;
include 鈥楿ser.php鈥;
include 鈥楢dmin.php鈥;

$user = new User;
$user->type = new Admin;
echo $user->type->greet();
?>

As铆 quedaron mis archivos:
Person. php

<?php
class Person
{
    public function greet()
    {
        return "Hola $this->name";
    }
}

User.php

<?php
class User
{
    public $type;
}

Admin.php

<?php
require_once __DIR__ . '/Person.php';

class Admin extends Person
{
    public $name = "Administrador";
}

index.php

<?php
require_once __DIR__ . '/Admin.php';
require_once __DIR__ . '/User.php';
require_once __DIR__ . '/Person.php';

$user = new User;
$user->$type = new Admin;

echo $user->$type->greet();

User.php

<?php

class User
{
	public $type;
}

Person.php

<?php

class Person
{
	public function greet()
	{
		return "Hola $this->name";
	}
}

Admin.php

<?php
include 'Person.php';

class Admin extends Person
{
	public $name = 'Administrador';
}

index.php

<?php

include 'User.php';
include 'Admin.php';

$user = new User;
$user->type = new Admin;
echo $user->type->greet();