Ir para conteúdo
Fórum Script Brasil
  • 0

Tentando imitar o Laravel no PHP


Frank K Hosaka

Pergunta

O que eu mais gostei no Laravel foi o Eloquent (ele usa a sintaxe tbdiario::where('lcto',12)->get( )) e o roteador.

O problema do roteador web.php é que você precisa criar uma nova rota para cada novo comando. O roteador que inventei não trabalha com um monte de rota, mas trabalha com a sintaxe classeMetodo, assim:
 

arquivo .htaccess
RewriteEngine On

# Redirecionar tudo para index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]


arquivo bd.php
<?php
class BD {
    public static $pdo;
    private static $initialized = false;

    public static function initialize() {
        if (!self::$initialized) {
            $host = 'localhost';
            $dbname = 'diario';
            $username = 'root';
            $password = '';

            $dsn = 'mysql:host=' . $host . ';dbname=' . $dbname;
            self::$pdo = new PDO($dsn, $username, $password);
            self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            self::$initialized = true;
        }
    }
}
?>

arquivo diario.php
<?php
class Diario extends BD {

    public static function getValor($lcto) {
        self::initialize(); // Certificando que a inicialização está sendo feita
        $sql = 'SELECT valor FROM tbdiario WHERE lcto = :lcto';
        $stmt = self::$pdo->prepare($sql);
        $stmt->bindParam(':lcto', $lcto);
        $stmt->execute();

        return $stmt->fetchColumn();
    }

    public static function inicio() {
        self::initialize(); // Certificando que a inicialização está sendo feita
        echo "olá mundo<br>";
        echo self::getValor(12);
    }
}
?>

arquivo index.php
<?php
spl_autoload_register(fn ($class) => 
require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php');

$requestUri = $_SERVER['REQUEST_URI'];
$basePath = '/astudy/';
$path = substr($requestUri, strlen($basePath));
if($path=="") {
    header('location:teste.php');
    exit;
}
if (preg_match('/^([a-z]+)([A-Z].*)$/', $path, $matches)) {
    $classe = $matches[1];
    $metodo = $matches[2];
}
$classe::$metodo();

arquivo teste.php
<a href=diarioInicio>teste</a>

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652k
×
×
  • Criar Novo...