No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Introducci贸n a clases y objetos

6/19
Recursos

Aportes 115

Preguntas 10

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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';
}

馃樀驴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.馃ぉ

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";
}

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";
}

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

馃幆 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";
  }

}

Mi aporte de la clase

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>```

index.php

<?php


require_once "User.php";
require_once "Admin.php";
require_once "Person.php";


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

person,php

 <?php
class Person
{
    public $name;
    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';
}

deben incluir $name en la clase para no generar error!

archivos

index

person

admin

user


echo

Una clase es una plantilla para los objetos. Y un objeto es la instancia de una clase.

index.php

<?php

require_once 'Admin.php';
require_once 'User.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";
    }
}
<?php

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

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

En mi caso lo tengo de esta manera:

index.php

<?php
    include('classes/User.php');
    include('classes/Admin.php');
    
    $user = new User;
    $user->type = new Admin;
    echo $user->type->greet();
?> 

Ya que, para hacer el Extends en la clase Admin, agregu茅 el include ah铆.

<?php
    include('Person.php');
    class Admin extends Person
    {
        public $name = 'Administrador';
    }
?>
<?php

require_once('./Person.php');

class Admin extends Person
{
    public $name = 'Administrador';
}
require('./User.php');
require('./Admin.php');

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

A mi entender, incluir la clase Peson debe estar en el archivo Admin y no en el index.
Debe ser as铆 porque al querer utilizar la clase Admin desde otro archivo este fallar铆a.


index.php

include_once("./Admin.php"); 
include_once("./User.php"); 

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

User.php

class User 
{
   public $type; 
}

Person.php

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

Admin.php

include_once("./Person.php");

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

Podemos resumir que clases es el molde y a partir de ese molde estoy creando diferentes objetos, en t茅rminos m谩s sencillos digamos que tenemos un 煤nico molde de usuarios y a partir de all铆 se pueden registrar miles de usuarios, es eso en esencia; si tengo una clase llamada post, esta clase me va a permitir crear n cantidad de post.
Digamos que la programaci贸n orientada a objetos me permite llamar a cada una de estas cosas como objetos, es la t茅cnica utilizada y en este caso la vamos a utilizar en el lenguaje de programaci贸n PHP.
CARACTER脥STICAS: Existe la herencia, la modularidad, abstracci贸n, polimorfismo (No tiene porque ser complicado).
Son diferentes conceptos que van relacionados.
Vamos a crear clases y a partir de ella vamos a crear objetos, nosotros simplemente tenemos que memorizar y entender de forma clara a cada una de estas caracter铆sticas ara crear c贸digo correctamente escrito.
Los diferentes signos son muy sencillos, por ejemplo, una clase requiere la palabra reservada class le colocas el nombre abre llave, cierra llave, esto es lo necesario.
Para crear un objeto a partir de esta clase utilizamos una palabra reservada que dice new, creamos una variable igual new y colocamos el nombre de esta clase, al hacerlo creamos autom谩ticamente un objeto, no hay mayor ciencia detr谩s de estos conceptos.

  • This: Con this hacemos referencia a diferentes elementos que forman parte de mi clase.
    La programaci贸n orienta a objetos me permite crear c贸digo aislado realmente, si lo hacemos paso a paso, si colocamos peque帽os bloques de c贸digo en cada archivo el mantenimiento va a ser exageradamente f谩cil y podemos continuar amando esta profesi贸n.

Mi resultado

Es muy importante tomar en cuenta el orden en el que incluimos los archivos, primero se deben llamar los archivos que no tengan dependencia de otros.

index.php

<?php

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

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

Clase Person

<?php

class Person
{
   public function greet()
   {
      return "Hey $this->name, como est谩s?";
   }
}

Clase User

<?php

class User
{
    public $type;
}

Clase Admin

<?php

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

Resumen de la clase

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

class User{
    public $type;
}

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

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


?>

Pese a que hab铆a visto algo de POO antes, si cuesta un poco entenderlo a la primera 馃槄
Pero sigamos que queda mucho por aprender!
Les comparto mi apunte:
index.php

<?php

// Se incluyen los diferentes archivos donde est谩n las clases creadas
include_once('./Admin.php');
include_once('./User.php');

// Se crean las instancias
$usuario = new User();

// Se le asigna un valor a las propiedades del objeto
$usuario->type = new Admin(); // A la propiedad 'type' se le asigna una instancia de la clase 'Admin'

// Invocamos alg煤n metodo
$usuario->type->greet();

.
Person.php

<?php

// Se crea la clase 'Person'
class Person{
   // Se le definen atributos o m茅todos segun sea el caso
   function greet(){ // m茅todo de saludar
    echo("Hola $this->name");
  }
}

.
Admin.php

<?php

// Se incluye la clase 'Person' para hacer uso de sus propiedades y m茅todos
include_once("./Person.php");

// Se crea la clase 'Admin' que a su vez extiene de la clase 'Person'
class Admin extends Person{
  public $name = "Administrador";
}

.
User.php

<?php

// Se crea la clase 'User' 
class User {
  // Se le definen atributos o m茅todos segun sea el caso
  public $type;
}

.
Resultado

Excelente profesor, explica muy bien estos conceptos.

P茅simo

person.php

<?php

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

user.php

<?php 

class User{
    public  $type;
}

admin.php

<?php

require_once 'person.php';

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

index.php

<?php

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

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

TERMINAL

Master [email protected] MINGW64 ~/Documents/Emma/Escuela de WORDPRESS/POO-PHP
$ php index.php
Hi Administarador

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();