Lo que más me gusta es a la velocidad que escriben código, lo que hace que el video sea más rápido e interesante. lo mantiene a uno concentrado al 100 %.
Hola estoy muy agradecido por el curso, agradezco que brinden estos conocimientos de manera gratuita. De veras considero que codigofacilito.com es un exelente sitio donde brindan todos estos cursos. Con respecto a este mi único señalamiento es que en algunos casos se explica como funciona lo que se esta tratando pero no se explica porque es útil especificamente o que lo diferencia de hacerlo de otra manera, es decir, que es lo novedoso del topico que se trata en cuestion. Mil gracias por el aporte
Anteriormente, comenté que no sabia el uso de los namespaces. Pero buscando info, encontré que sirven para diferenciar, es decir, si se tienen quizás clases con el mismo nombre, por ejemplo, se usan los namespaces para poder diferenciarlas. Un ejemplo: Si en una compañía entra alguien que se llame Pepe y después entra otro, se usan los apellidos para diferenciarlos, es así en código pero se usan los namespaces.
Yo no soy un experto en PHP, sin embargo tengo experiencia desarrollando paginas, aplicaciones y sistemas en dicho lenguaje y entiendo perfectamente lo que el tutor explica y modifica en el código, veo que muchos se quejan por no entender ciertas partes del video, seria mejor que comiencen con algo más básico para poder entender algo más complejo. Para eso se debe tener algo esencial llamado "Lógica de programación".
+Alejandro Rueda , un saludo. Realmente los "Namespaces" nos ayudan a dar orden, estructura y cumplimiento a convenciones que mejoran la administración y mantenimiento del código. Básicamente es eso.
Al final no entendí naada, un par de horas confundido pero luego me salió bien, o eso espero. En mi caso escribí el mismo código, con las diferencias que los archivos tienen el mismo nombre: api/Models/persona.php y api/Controllers/persona.php, luego en index.php escibí: function autoload($clase){ include str_replace("\\","/","$clase.php");} spl_autoload_register('autoload'); Models\persona::Hola(); Controllers\persona::Hola();
Otra cosa que pude comprobar para que funcione, el nombre del archivo php debe ser igual al de la clase, es decir: personaController.php y class personaController{ }
Gracias por el video, no lograba entender lo de los namespace busque en documentacion y tutoriales sobre este tema muy poco se habla sobre los directorios o carpetas donde se almacena los archivos.php que es algo importante y no se puede perder de vista pues esa es la gracia del namespace.
Estoy siguiendo el curso, en los próximos días continuaré viéndolos. Muy interesante las cosas que haces. Me ha interesado lo del namespace, el trait y lo del autoload que está genial. Saludos desde Venezuela.
Muy bueno. Solo aclarar que una de las convenciones es que se coloca por ejemplo PersonasController y no PersonasControllers, ya que "controller" llamamos a un tipo de clase y archivo que cumple con esa función, y por lo tanto, lo lógico es que sea controller en singular.
Al final no quedó muy claro, ya que cambiaste el nombre de una de las clases lo que haría inútil al Namespace. Claro, esto para adaptarlo a nuestro spl_autoload_register(); y todo por hacer de buena práctica colocando el archivo del controlador como PersonaController.php Si ambos archivos se llamaran Persona.php y uno está en /Models y el otro en /Controllers al hacer el spl no tendríamos problemas.. Y por lo tanto, no tendríamos que cambiar el nombre de la clase, seguiríamos teniendo las clases con el mismo nombre :P
+Professor Zoom asi son los de codigo facilito no preparan ya la clase sino q nos hacen perder el tiempo para luego decirnos q hay un error borran todo y kedas asi U.u
Recientemente empecé a aprender PHP y en un sistema de pruebas donde voy realizando todas mis prácticas estoy utilizando PDO en lugar de MySQLi, tanto para la conexión como para el resto de clases y funciones (simplemente por cuestión de versatilidad); hasta el momento no tuve ningún problema, pero al empezar con el tema de los namespaces tengo la sensación que PDO no funciona con namespaces, eso o existe otro método para hacerlos funcionar en PDO porque utilizando el método que nos enseñas créeme que ya he revisado mil veces el código y no existe ningún problema, no obstante indica que la clase no existe. Saludos!
Lamento la tardanza, el mensaje lo hice hace 3 meses y desde entonces ya he trabajado en algunos proyectos PHP por lo que estuve algo liado. Precisamente ahora estoy trabajando en un nuevo proyecto que voy a desarrollar utilizando el patrón MVC + PDO y por ello es que volví a repasar el vídeo y vi el mensaje; revisando la sintaxis que utilizaba en aquel entonces creo que el problema no se encuentra tanto en la compatibilidad del método PDO con los namespaces, si no precisamente en la sintaxis que yo utilizaba al momento de invocar una clase. Por ejemplo yo hacía esto: $variable = new clase(); $variable -> metodo(); Que es correcto, en primer lugar, creaba una variable donde instanciaba la clase y en segundo lugar utilizaba -> para llamar al método de esa clase, mientras que “creo” (aun no puedo confirmarlo porque aún no me considero un experto y recién empiezo este proyecto) que es ahí donde partía el problema, pues usando autoload y namespaces la forma de llamar a la clase y su método seria directamente así: models\clase::metodo(); También se puede utilizar “use” para crear un alias y no escribir el models\clase, se haría de la siguiente forma: use models\clase as alias; alias::metodo(); La última vez que lo hice no me funciono y no había forma que encontrase el fallo por lo que me rendí con este asunto, claro, sin ser experto es normal que haya cosas que se escapen, pero aprendiendo poco a poco se van agarrando las mañas y creo que el problema es realmente el estar mezclando sintaxis, si vas a utilizar PDO, vas hacerlo de la forma correcta y en todo el sitio, no utilices PDO aquí, MySQLi allá... Hasta donde alcanzan mis conocimientos la teoría tiene su lógica, pero déjame lo ponga en práctica para confirmarlo, si me sale con todo gusto vuelvo a escribir un comentario para indicar que estaba en lo correcto y si no lo estaba, indicar donde fallaba. Saludos!
Y te respondo porque hasta apenas encontré el motivo. No era por lo que decía, la sintaxis que estaba utilizando en aquel entonces, aunque mejorable era correcta, efectivamente es un problema de los namespaces con PDO que tiene una sencilla solución: En primer lugar se declara el namespace ¿no? si se utiliza PDO y con nuestro autoload configurado como se indica en el vídeo va a indicar que el archivo no existe, pero si vemos los errores nos dice algo muy curioso: Fatal error: Uncaught Error: Class 'model\PDO' not found... ¡Eureka! por supuesto que no existe, no tengo ningún archivo PDO dentro de model ¿Solución? crear un alias de la siguiente forma: namespace nombre_cualquiera; use PDO; ¡Listo! arreglado el problema, ahora sí existe el archivo. ¡Saludos!
Muy bueno el tutorial muchas gracias. Como consulta. Para mostrar información en tiempo real es recomendable utilizar socket o una conexión push, Quedo atento a sus comentarios saludos desde chile
En el archivo donde se llama las clases solo debe quedar asi: spl_autoload_register(function($clase){ $ruta = "api/".str_replace("\\", "/", $clase).".php"; include_once($ruta); }); Controlador\Persona::mostrar(); Modelo\Persona::mostrar(); No es necesario cambiar nada mas....
Haré como si el str_replace no existe todo el vídeo iba de 10 hasta ay, quizás no sean compatibles esos métodos no me quedo del claro la anulación del namespace cambiando los nombres un enredo total pero muy bueno el resto. Saludos gracias por compartir esta info!
aaa pero al final has usado otro nombre para llamar a la clase es decir Models\Persona::Hola(); y Controllers\PersonaControllers::Hola(); no se supone que podemos usar el mismo nombre con diferente namespace?
mmmmm si un poco flojo pero sus aportes son buenos ok estoy aprendiendo mucho. a los q no les gusta este metodo en ve de criticar pueden dar un unlike pero a ud mismo por no valorar lo que al tutor el tiempo y dedicación que te traen "gratis" maldicion es gratis ok. no sean frescos ai quieren criticar primero compren sus libros y su videos. man tu sigue estas bien solo q si aveces deves de preparte un pelo o en todo caso antes de subir solo revisalo con alguien ps :) vamos man no dejes q estos pelados todabia de misios conchudos te bajen la moral.
@@josuegomez3352 Cuando utilizamos Models\Persona::hola() la funcion spl_autoload_register detecta esta "ruta" \Models\Persona, donde esta se almecenara en el parametro $clase es mi oponion.
les recomiendo este video: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-zTxz_kOLIZM.html está en ingles, pero me sacó muchas dudas que aquí se me generaron
El uso sería poder utilizar varias clases sin importarnos que se llamen igual para eso el namespace como indicador de la clase, y no estar renombrando las clases que nos arrojaran error el codigo por que se llamaran igual y andar a buscar y reemplazar su nombre. Bueno eso yo le entendi
Estaba leyendo el link y mi duda con respecto al vídeo es en la función anónima recibe un parámetro $clase, en qué momento se envió algo a esa función anónima?? Esta muy lindo eso de recuperar el namespace de Models\Persona, pero en qué momento se cargó?
Pero por supuesto que si existe. No entiendo como hacen correcciones si no tienen el conocimiento. Hubiéramos o Hubiésemos, es la conjugación del verbo Haber en PRETÉRITO IMPERFECTO. Consúltalo en RAE. Saludos.
9 лет назад
Excelentes tutoriales los publicados, pero intenta respirar un poco más :D
Es evidente que el orador domina perfectamente el tema .. pero asimismo que no gastó ni un minuto en preparar la clase, se lo sacó todo de la cabeza al vuelo ... si al final corriges una línea y luego todo sale bien ... ok .. Pero cuando empiezas a cambiar cosas a una velocidad de vértigo ... muchos podrían quedar desfazados ... y se verán obligados a ver el video una y otra vez para entender, o simplemente buscarse otro video (cosa inapropiada para este canal) .. considero que son errores imperdonables ... el profesor debería tener un código 100% probado antes de iniciar el video, así fuera en un papel aparte y lo reescriba luego en la pantalla, o pausar el video, arreglar las cosas ... Y en este caso al final perdió totalmente el sentido del "namespace" pues tenías dos clases con diferentes nombres .. entonces para que me sirvió el namespace ... esas mismas clases se habrían cargado perfectamente con el autoload sin el uso de "namespace" porque tenían diferente nombre ("Persona" y "PersonasControllers") Lo bueno de Código facilito es que son videos breves de temas específicos ... pero eso no debería convertirse en mareo del expectador.
mmmmm si un poco flojo pero sus aportes son buenos ok estoy aprendiendo mucho. a los q no les gusta este metodo en ve de criticar pueden dar un unlike pero a ud mismo por no valorar lo que al tutor el tiempo y dedicación que te traen "gratis" maldicion es gratis ok. no sean frescos ai quieren criticar primero compren sus libros y su videos. man tu sigue estas bien solo q si aveces deves de preparte un pelo o en todo caso antes de subir solo revisalo con alguien ps :) vamos man no dejes q estos pelados todabia de misios conchudos te bajen la moral.