2
respostas

$_SERVER['PHP_SELF']

Oi.

Estou tentando criar uma estrutura MVC do zero para aprender de fato como funciona antes de partir pra algum framework. Preciso pegar os recursos da URL, então estou utilizando o $_SERVER['PHP_SELF'], o problema é que no meu pc esse valor vem sempre nulo, utilizo ubuntu 16.04 e quando instalei o PHP, não baixei nenhum 'pacote' como LAMP, Xampp.. instalei tudo separado, nginx, php e mysql, fiz algumas alterações no nginx para que ele aceitasse arquivos php e tudo mais, mas to achando que preciso fazer algo a mais para que o $_SERVER['PHP_SELF'] funcione porque baixei o wamp em outro pc que tenho aqui e foi tranquilo.

Alguém poderia me dar uma luz? Obg

2 respostas

Oi Daniel, tudo bom?

Os dados do array global _SERVER vem todos do servidor. Tenta verificar o que temos dentro dela, assim a gente consegue analisar melhor o problema =)

echo "<pre>".print_r($_SERVER, 1)."</pre>";

Aguardo retorno.

Abraço.

Oi André, muito obrigado por responder.

Essa questão do PHP_SELF eu até consegui resolver, não me pergunte como, fui alterando alguns arquivos aqui conforme fui procurando na internet, mas antes ele ficava como no value.

Mesmo assim não consegui prosseguir com a criação da estrutura, criei um virtual host chamado mvc.dev e ainda não mexi com o htaccess então a URL pra acessar algum controller e action ficaria assim

mvc.dev/index.php/home/index

Para pegar o nome dos controllers e actions estou seguindo um tutorial onde o carinha faz assim:

        $url = explode('index.php', $_SERVER['PHP_SELF']);
        $url = end($url);

O problema é que quando eu tento acessar mvc.dev/index.php/home/ por exemplo ele da 404 - Not Found, nem sei mais onde procurar =/

Caso ajude, a classe responsável e o método para pegar a URL e rodar tudo é essa aqui.

class Core {

    public function run() {
        $url = explode('index.php', $_SERVER['PHP_SELF']);
        $url = end($url);

        if (!empty($url)) {
            $url = explode('/', $url);
            array_shift($url);

            $controller = $url[0].'Controller';
            if (isset($url[1])) {
                $action = $url[1];
            } else {
                $action = 'index';
            }

        } else {
            $controller = 'HomeController';
            $action = 'index';
        }

        $controller = ucfirst($controller);

        require_once 'core/Controller.php';
        $c = new $controller();
        $c->$action();

    }

}