No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Solución del reto de herencia en PHP

27/37
Recursos

Aportes 127

Preguntas 38

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Solución al error: Server error: Error: spawn php ENOENT
Este error ocurre cuando intentas prender el servidor PHP pero no te muestra la página creada sino te dice que "La página localhost ha rechazado la conexión."
El primer paso es descargar e instalar Xampp desde el siguiente enlace: https://www.apachefriends.org/es/index.html
Después te tiene que dirigir a la sección de Extensions ubicada en la parte izquierda de tu Visual Studio Code.
Luego tienes que buscar la extensión que instalamos al inicio del curso llamada PHP Server, dar click en el engrane que aparece en la extensión e ingresar a la opción que dice “Extension Settings”.
Por último ubicar el apartado de “Phpserver: PHP Path”, debes de colocar ahí la ruta del ejecutable de PHP que se instaló junto con el servidor Xampp, comúnmente está en la ruta C:\xampp\php\php.exe
Después de haber hecho estos pasos debería iniciar el servidor PHP sin problemas y aparecer como se muestra en el video.

que complejo manejar los 4 lenguajes a la vez, sobretodo ahora empezando con este mundo

Con PHP se necesita tener el interprete instalado, claro, en el cas que quieras usar la extensión del live server, pero PHP también tiene integrado su propio servidor el cual lo pueden levantar con el comando:

php -S localhost:8080 index.php

Y simplemente entran al navegador con la url: localhost:8080

Para los que trabajen con Ubuntu(linux) en la terminal de Windows. Lo que pueden hacer es instalar php:

sudo apt install php7.4-cli

Iniciar el servidor:

php -S localhost:8080 index.php

Si tiene algún error en el código, el mismo server les estará indicando en que líneas y no se olviden de iniciar el editor con

 code .

Si de pronto no saben de lo que hablo pueden ver este curso 😄 https://platzi.com/clases/prework-windows/

Tuve al igual que varios el problema de poner a funcionar el servicio PHP. Después de varios intentos y leyendo varios foros, logre poner a funcionar el servicio PHP desde Visual Studio.

Esto fue lo que hcie:

  1. Instalar Xampp
  2. Configurar las variables de entorno:
    • Dentro de la variable Path agregar la ruta C:\xampp\php
  3. En visual Studio ir a file->preferences->Settings y buscar “editar desde settings.json” y en este archivo adicionar las siguientes lineas:
"php.executablePath": "C:/xampp/php/php.exe",
"php.validate.executablePath": "C:/xampp/php/php.exe"

Otra manera de poder consultar php a navegador:

A nuestra terminal accedemos al directorio donde tengamos nuestro index.php
Desde allí escribimos php -S localhost:8000

Ahora desde nuestro navegador preferido ya podemos acceder a localhost:8000 y allí podremos ver el index.php

Ok para los que van iniciando en Php, es lógico pensar que previo a este curso no tienen instalado ningún tipo de servidor local, si como muchos de nosotros instalaron la extensión de Php Server y les da errores es porque esta extensión necesita de un servidor local pre instalado, lo que recomiendo es instalar primero el servidor local y después la extensión en VSC ya que de esta manera la extensión reconoce de manera automática la ruta del ejecutable del servidor, Si te da errores entonces deberás configurar de manera manual la ruta que apunta al servidor, y esto lo hacemos de la manera en que el resto de compañeros han especificado en sus aportes. Suerte 😃

🐱‍💻 Instanciando objetos de las clases mencionadas en lenguaje Dart.

import 'account.dart';
import 'uber_x.dart';
import 'uber_pool.dart';

void main() {
  UberX uberX = UberX(license: 'CVB123', driver: Account(name:  'Andres Herrera', document: 'AND456'), brand: 'Chevrolet', model: 'Spark');
  uberX.printDataCar();

  UberPool uberPool = UberPool(license: 'TYU567', driver: Account(name:  'Andrea Ferran', document: 'ANDA765'), brand: 'Dodge', model: 'Attitude');
  uberX.printDataCar();
}

Salto de linea <br />

public $driver;
  public $passegenger;

  public function __construct($license, $driver){
    $this->license = $license;
    $this->driver = $driver;
  }

  public function printDataCar(){
    echo "Licencia: $this->license Driver: ".$this->driver->name."<br />";
  }
}
?>```

Una vez más para los que estamos empezando en este mundo, no nos atormentemos queriendo entender los 4 lenguajes a la vez, escojan uno, con el que vengan trabajando o tengan mayor afinidad síganlo y entiéndanlo bien eso sí, y a los otros simplemente déjenlos a un lado por el momento en un futuro ya habrá tiempo para repasarlos, es lo que yo he venido haciendo y resulta mas digerible el curso, y los otros lenguajes simplemente veo las clases para tener un poquito mas de contexto pero hasta ahi

por fin me salio

amigos a alguien le sale el siguiente error? Server error: Error: spawn php ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19)
at onErrorNT (internal/child_process.js:407:16)
at process._tickCallback (internal/process/next_tick.js:63:19)

Aquí el index.php

Aquí el resultado en el navegador (Cabe resaltar que estoy usando el servicio de Xampp, con Visual Studio no me funcionó)

Francamente no me gusta PHP jaja su sintaxis está bien fea y no me voy a dedicar a eso.

Solamente voy a terminar el curso, porque ya falta poco para terminarlo…

A mi me salía un error al imprimir los datos de carro, así que utilice esta sintaxis

public function printDataCar() {
        echo 'License: '.$this->license.' ';
        echo 'Driver: '.$this->driver->name.' ';
    }

Bueno, a partir de aqui dejo php

Mi evidencia del ejercicio Logrado:

PHP
Driver.php

<<?php
include_once("Account.php");

class Driver extends Account
{
    public $typeUser;

    public function __construct($id, $name, $document, $email, $password, $typeUser)
    {
        parent::__construct($id, $name, $document, $email, $password);
        $this->typeUser = $typeUser;
    }
}
?>>

uberX.php

<<?php
    require_once('Car.php');
    require_once('Driver.php');
    
    class UberX extends Car
    {
        public $brand;
        public $model;

        public function __construct($id, $license, $driver, $passenger, $brand, $model)
        {
            parent::__construct($id, $license, $driver, $passenger);
            $this->brand = $brand;
            $this->model = $model;
        }
    }
?>>

Main2.php

<<?php 
require_once("Car.php");
include_once("UberX.php");
require_once("Driver.php");

$driver1 = new Driver(1235, "quiamentino noroño", "28009657", "noroñ[email protected]", "mipasdword", "driver");
$uberX1 = new UberX(3452, "FGT567F", $driver1, 4, "Chevrolet", "Spark 2017");
echo $uberX1->printDataCar();
?>>

resultado
![](C:\Users\VITm2421\Dropbox\Capturas de pantalla)

Cuando intento correr el Serve Project en el navegador me aparece
"La página localhost ha rechazado la conexión.
¿Querías decir http://localhost3000.org/?
Busca localhost 3000 en Google
ERR_CONNECTION_REFUSED"

Y en visual basic me sale esto

Excelente respuesta de @abbustamante para solucionar el problema de configuración de php server, gracias.

Para los que corremos VS Code desde WSL2 y Ubuntu aqui las consideraciones para que puedan ejecutar php, cabe mencionar que la instalación de php es desde línea de comando y no se requiere instalar Xampp.
https://www.youtube.com/watch?v=xErcf1uJdIo

Para los que tienen WSL2 y ven esto en 2022 tienen que instalar PHP desde la terminal con la siguiente línea :

sudo apt install php8.1-cli

Luego ir a la carpeta PHP de tu proyecto y ejecuta esta línea:

php -S localhost:8080 index.php

Luego vayan a su navegador y abran el localhost:8080 .

Warning: require_once(Account.php): Failed to open stream: No such file or directory in /home/jjcuri/Escritorio/ESCUELAS PLATZI/Escuela Data Science e IA/programacion orientada a objetos/CursoPOOUber/PHP/car.php on line 8

alguien que me pueda orientar para solucionar este tema, llevo una semana sin poder solucionarlo, que estresante…

La mayoría de los lenguajes son parecidos y al final se obtiene el mismo resultado utilizando cualquiera de ellos. 💚

Buenos días, tengo este error, mi sistema operativo es Ubuntu 20.04. PHP: syntax error, unexpected ‘(’ in /opt/lampp/bin/php-8.1.2 on line 3. [Tue Feb 8 09:20:37 2022] PHP 8.1.2 Development Server " started

Estuve revisando los comentarios de los compañeros, y no encontré alguno que ejecutara php desde consola como se hace con Python. Si repasan un poco de historia de PHP nació para ejecutarse por consola como AWK o script en bash. Por lo que ví esta clase se puede ejecutar desde consola (Sea windows o GNU/Linux) y trae el mismo resultado en consola,

Logre ejecutar el php, pero debo confesar que fue difícil hacerlo correr viendo algunos tutoriales e instalando xampp, y también logre imprimir los demás datos:
index.php

quedo así:

Con salto de linea el resultado:

<?php
require_once("car.php");
require_once("UberX.php");
require_once("account.php");
require_once("UberPool.php");

$UberX = new UberX("CVB123", new account("Andres Herrera \n","AND456"),"CHEVrolet","spark");
$UberX ->printDataCar(); 


$UberPool = new UberPool("TYU567", new account("Andrea Ferran","AND765"),"Dodge","Attitude");

$UberPool->printDataCar();

RESULTADO:
Licencia: CVB123 Driver: Andres Herrera
Licencia: TYU567 Driver: Andrea Ferran

¡Reto completado!

  • Estando en linux en la carpeta del proyecto y habiendo instalado php por consola con los comandos:
php -S IP:puerto nombreArchivo.php
  • Les crea un servidor con ese archivo, luego digitan en el navegador:
ip:puerto/nombreArchivo.php

Y listo.

creo firmemente que las aplicacion de los cuatro lenguajes es conocimiento en bruto es necesario practicar hasta que los conceptos tengan forma.

Saludos, al momento de imprimir me da este error, que puede ser?

cuales extenciones utiliza?

Logrado!

require_once(“archivo.php”) incluye el código que está dentro de los archivos que se llama, sólo que si ya llamó una vez, no va a repetir el procedimiento, algo que no va a pasar con el require(“archivo.php”).

<?php
require_once(“car.php”);
require_once(“uberX.php”);
require_once(“uberPool.php”);
require_once(“account.php”);

$uberX = new uberX("CVB123", new Account("Andres Herrera", "AND456"), "Chevrolet", "Spark");
$uberX -> printDataCar();

$uberPool = new uberPool("TY567", new Account("Andrea Ferran", "ANDA765"), "Dodge","Attitude");
$uberPool -> printDataCar();

License: CVB123 Driver: Andres Herrera Document: AND456 License: TY567 Driver: Andrea Ferran Document: ANDA765

Muy buena esta clase

Despues de leer, todas las soluciones realice lo siguiente:
1.-Desistale XAMPP, porque lo tenia en otro disco (debido al espacio de mi disco principal) y lo instale en “C”, cabe mencionar que me encuentro en win.
2.-Edite en las variables de entorno, agregandola en el path, como aparece en la siguiente imagen:

3.-Dentro de Visual Studio Code edite el archivo .json de la siguiente forma:

},
  "phpserver.router": "",
  "phpserver.relativePath": ,
  "php.debug.executablePath": "",
  "php.executablePath": "C:/xampp/php/php.exe",
  "php.validate.executablePath": "C:/xampp/php/php.exe" 
}

La manera mas rapida para llegar a los settings, es darle click al engrane, luego clickear en configuracion, como se muestra en la siguiente imagen:

4.- Apezar de realizar todo lo mencionado, no podia correr el dicho servidor.
5.-Desabilite todas las extensiones php y posteriormente realice la ultima prueba y por fin logre el reto.

ok no crei que hiciera lo correcto pero php esta vez nos llevaremos mejor!


Yo me puse a jugar y me adelante , he hice un método en la clase uberX para imprimir también la marca y modelo

![](

Información resumida de esta clase
#EstudiantesDePlatzi

  • Para crear los archivos podemos usar la terminal con el comando touch y el nombre del archivo

  • En PHP utilizamos el signo $ para poder definir una variable

  • Es importante reutilizar métodos y atributos

Seguire con el curso, el fatal error no desaparece 😦

Traten de checar si los

require_once("");

levan punto y coma al final

Tuve que reinstalar mi sistema operativo en Mac para que funcione xampp

Falta mostrar brand y model

Saludos.

Por que require_once y no require?

Bueno, aunque para el ejemplo se puede la forma basica require, es una buena practica usar el _once, y lo que hace require_once es, si el archivo requerido ya existe, no lo cargaria nuevamente; para el require pues trae el archivo todas las veces que lo solicitemos.

Pequeño aporte, espero sirva.

Saludos.

Lo logre con salto de linea

En mi caso, me dio el siguiente error:

…/index.php - Uncaught Error: Object of class Account could not be converted to string.

para solventarlo en la clase “Car” hice lo siguiente:

<?php
require_once('account.php');
class Car {
    public $id;
    public $licence;
    public Account $driver;
    public $passengers;

    public function __construct($id, $licence, $driver) {
        $this->id = $id;
        $this->licence = $licence;
        $this->driver =$driver;
    }

    public function printDataCar() { 
        echo "Licence: $this->licence Driver: ".$this->driver->name;
    }
}
?>

en resumen, >
public Account $driver;

Es bellisimo! 😋

👾

Para poder diferenciar los tipos de Uber, agregue una variable que se envia a la función printDataCar() y esta lo imprime…

en index.php

<?php
....
$uberX = new UberX("YJI62C", new Account("Mauricio López", "43921108"), "MAZDA", "CX-30");
$tipoUber = "uberX";
$uberX->printDataCar($tipoUber);
....
?>

en Car.php

public function PrintDataCar($tipoUber){
    echo "$tipoUber: License: $this->license, Conductor: {$this->driver->name}, Documento: {$this->driver->document} <br><br>";
  }

Con esto se imprime el mensaje:

uberX: License: YJI62C, Conductor: Mauricio López, Documento: 43921108

Y así se puede diferenciar en el ejemplo que tipo de uber es.

Todos los lenguajes se parecen

⭐️Opción:
Configurar el php server en visual basic code desde la configuración de usuario > Extensiones > PHP Server Config y configuralo con el servidor Apache y tu instalación de PHP, tambien con el puerto

Con PHP se necesita tener el interprete instalado, claro, en el cas que quieras usar la extensión del live server, pero PHP también tiene integrado su propio servidor el cual lo pueden levantar con el comando:
php -S localhost:8080 index.php

como es que todo tiene una lógica y un sentido por lo que se puede ir completando el código

En mi caso me mostraba esto:

En las propiedades de la extension:

y en mi archivo php lo guarde como utf-8, no se por que me lo creo como utf-16be con esos cambios me funciono.

Lo logre gente ❤️

Los que no pueden iniciar el servidor para ejectutar PHP, les digo como pude hacerlo:

  1. Instale XAMPP
  2. Copie mis archivos PHP y pegué dentro de htdocs que está dentro de XAMPP
  3. Inicié el servidor XAMPP

Y al entrar al navegador y escibir “localhost/nombreCarpeta/index.php” pude ejecutar mi código.

Si ya tienen PHP y ya configuraron VS Code para trabajar con este lenguje y aun asi no les carga el alchivo index cuando le dan click derecho PHP Server : Server Project. …

Puede que falte un punto y coma o cambiar una mayúscula por una minúscula o viceversa.

Resultado!.

Buenas tardes , me encuentro ejecutando el index pero me esta arrojando 404, me podrían ayudar indicandome cual es el error, gracias.


Gente, cudado que en php (no se en que otro leguaje mas) importa el orden de los parametros en las calses contructoras tanto del hijo como el del padre.


A mi me sirvio este tutorial para poder instalar PHP: https://www.youtube.com/watch?v=xAU3Tb7mm80

Espero que le puede ser de ayuda a alguien mas

Parece que también se pueden visualizar los cambios realizados en el código, solo refrescando la pagina del navegador.

Bueno php y python no vemos mas adelante .
Excelente clase saludos.

Bien!!!

genial

Inyección de dependencias

Hola tengo un problema con PHP al imprimir, tengo todo exactamente como esta en el ejercicio, sin embargo cuando imprimo en el servidor, sale en blanco no imprime nada nisiquiera arroja un error.

Muy Bueno

Es un buen ejemplo donde en el camino se pueden encontrar muchos errores, y se aprende, solucionandolos, es lo mejor lo que refuerza nuestro aprendizaje

Excente clase!!

Arrancar el servidor de PHP para correr los archivos dando clid derecho y seleccionando la opción: "PHP serve project"

Tengo este errorr!!!

id = $id; $this->name = $name; } } ?>id = $id; $this->driver = $driver; } public function getDataTrip(){ echo "Car id" . $this->id ." Driver name: " . $this->driver->name; } } ?>
Fatal error: Uncaught Error: Class 'Car' not found in C:\Users\DeLL\Desktop\Fundamentos de programacion\POO\PHP\Main.php:6 Stack trace: #0 {main} thrown in C:\Users\DeLL\Desktop\Fundamentos de programacion\POO\PHP\Main.php on line 6```

Todo nuevo con PHP

dos puntos por terminar de ver el video :v

Super, super super. 😃

en a creación de las clases me presentó un error en la direccion de la carpeta, por ende no pude realizar la programacion con el correcto orden, que podría hacer en este caso???

Herencia en PHP …

Cual es la diferencia entre include_once y requiere_once? Cuando utilizar uno y cuando utilizar el otro?

Perfecto entendido.

no entendía la parte del new account dentro de otro new hasta hize otro similar
animal.php

<?php
class animal{
    private $id;
    private $persona;

    public function __construct($id,$persona){
        $this->id=$id;
        $this->persona=$persona;
    }
    public function printAnimal() {
        echo "Id: $this->id persona: ".$this->persona->apellido;
    }
}```

persona.php


<?php
class persona{
public $nombre;
public $apellido;
public function __construct($nombre,$apellido){
$this->nombre=$nombre;
$this->apellido=$apellido;
}
}```

index.php

<?php
require_once('animal.php');
require_once('gato.php');
require_once('persona.php');

$persona1=new persona("anthony","cardenas");
$gato1=new gato("1",$persona1);
$gato1->setpelaje("blanco");
echo $gato1->printAnimal();

echo  " pelaje : ".$gato1->getpelaje();```

gato.php


<?php
require_once(‘animal.php’);
require_once(‘persona.php’);
class gato extends animal{
private $pelaje;

public function getpelaje(){
   return $this->pelaje;
}
public function setpelaje($pelaje) {
   return $this->pelaje=$pelaje;
}
public function __construct($id,$nombre){
    parent::__construct($id,$nombre);

}

}


Es curioso que en php para implementar la herencia de una clase primero debemos insertar el codigo de la super clase con include o require

En este enlace Encontraras mas informacion sobre el include y el require

No me permite ejecutar el servidor de PHP, me sale server error, alguién me podría ayudar?

se me a presentaod muchos problemas con vs tanto con python y ahora php quue no ejecuta su server que por algo de path y ahora que cierro e inicio derrepnete todos los archivos de las sub clases con problemas de sintazis y veo que estan bien

Un tip para tomar en cuenta es que la clase Account está siendo inicializada en ambas clases con los mismos datos, debería estar una sola instanciación de la case para reutilizarlo en los parametros que utilicen ese mismo objeto.

Excelente, gracias por mostrarnos como reutilizar métodos y aprovechar mejor la herencia en PHP instructora Anahí.

Al momento de correrlo me aparecen símbolos raros 😦

MZ�??���@????�?� �!�?L�!This program cannot be run in DOS mode. $�yr��??��??��??��`���?

Vamos Bien!.. Herencia.

Reto, terminar la herencia en PHP, casi igual que en java.

Excelente gracias estoy muy emocionado con lo que se esta aprendiendo =)

no hubo caso, no pude hacer correr el servidor php

Great Class!

En linux installan el servicio php

Tuve una cantidad de problemas, pero los aportes fueron de mucha ayuda. Otro problema fue que la carpeta account la escribi mal, por lo cual no encontraba nada. Sigamos.