Me puede explicar el uso de esta funcion?
Publicado por Miguel (32 intervenciones) el 09/10/2018 01:15:20
Hola, estoy aprendiendo php orientado a objetos y estoy siguiendo un curso para hacer un framework con php mvc, pero estas sentencias no las entiendo, a ver si alguien me puede explicar su funcion.
Aqui no entiendo cual es la funcion del new
Y aqui no se para que se utiliza la funcion call_user_func_array y tampoco se que hizo con la variable parameters
Aqui les dejo el codigo completo
Aqui no entiendo cual es la funcion del new
1
2
require_once('../app/controllers/'. $this->actualController . '.php');
$this->actualController = new $this->actualController;
Y aqui no se para que se utiliza la funcion call_user_func_array y tampoco se que hizo con la variable parameters
1
2
3
$this->parameters = $url ? array_values($url) : [];
call_user_func_array([$this->actualController,$this->actualMethod],$this->parameters);
Aqui les dejo el codigo completo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
//TRAER LA URL INGRESADA
class Core{
protected $actualController = 'pages';
protected $actualMethod = 'index';
protected $parameters = [];
public function __construct(){
//EJECUTA LA FUNCION PARA OBTENER LA URL Y LO ALMACENA EN LA VARIABLE URL
$url = $this->getUrl();
//VERIFICA SI EXISTE EL ARCHIVO EN EL DIRECTORIO CONTROLLERS A PARTIR DE LA URL
if(file_exists('../app/controllers/'. ucwords($url[0]). '.php')){
$this->actualController = ucwords($url[0]);
//ELIMINA EL ELEMENTO DEL ARRAY CORRESPONDIENTE AL CONTROLADOR
unset($url[0]);
}
require_once('../app/controllers/'. $this->actualController . '.php');
$this->actualController = new $this->actualController;
//SI EL METODO SE ENCUENTRA EN LA URL VERIFICA SI EL METODO EXISTE
if(isset($url[1])){
if(method_exists($this->actualController, $url[1])){
$this->actualMethod = $url[1];
//ELIMINA EL ELEMENTO DEL ARRAY CORRESPONDIENTE AL METODOL
unset($url[1]);
}
}
$this->parameters = $url ? array_values($url) : [];
call_user_func_array([$this->actualController,$this->actualMethod],$this->parameters);
}
//OBTIENE LA URL, VERIFICA SI TIENE ESPACIOS DESPUES DE LA CADENA, LE QUITA CARACTERES EXTRAÑOS Y CONVIERTE EN UN ARRAY CADA PARTE DE LA URL
public function getUrl(){
if(isset($_GET['url'])){
$url = rtrim($_GET['url'], '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url = explode('/', $url);
return $url;
}
}
}
Valora esta pregunta


0