Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando Rotermund

Criando um framework PHP reutilizando Libs conhecidas

Recommended Posts

Srs, em minha busca de um framework em PHP eu me deparei com muitas barreiras:

 

- Host compartilhado com versão do PHP que o framework não suporta;
- Frameworks lentos;
- Sistemas de rotas ou ORMs lentos;
- OOP indigestíveis e feias;

 

Testei o Laravel em um host compartilhado que não me agradou (lento). Meus clientes não estão preparados para pagar um Cloud. E agora na versão 5.1 do Laravel são poucos hots com o PHP 5.5.

 

O CodeIgniter apesar de ser rápido, sua OOP é um pouco indigesta e feia, odeio como ele instância as Models e aqueles underlines nos nomes dos métodos e classes

 

O Yii2 eu ainda estou testando, mas me incomoda um pouco aquele monte de Arrays para configurar algo e sua estrutura de diretórios é bem chata, a do Laravel é melhor e mais direta. Ainda não sei se vale a pena utilizar Yii.

Minha escolha por um framework virou uma novela pois eu gostaria de um que fosse gostoso de programar como o Laravel, tivesse a velocidade do CodeIgniter.

 

Como conheço o PHP desta versão 3, sempre criei meus frameworks, mas hoje eu gostaria de algo que o mercado absorvesse melhor, e criar mais um framework com tantos por ai, seria como reinventar a roda.

 

Foi ai que tive a ideia de simplesmente pegar códigos de bibliotecas conhecidas (e são muuuitas) e criar um framework ao meu gosto, reutilizando Libs de Rotas, templates, cache, acesso a dados (ORM), validação e etc. Com isso as empresas para qual eu presto serviço teriam algo mais solido e de fácil manutenção (já que as libs são testadas e possuem manual de utilização, tipo o Slim com o ORM Doctrine ou o Idiorm).

 

Gostaria de saber se alguém já fez isso? E opiniões são bem vindas?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

VPS está aí. Digital Ocean, AWS, Rackspace... tudo barato e de qualidade. Configura do jeito que quiser, com a versão do PHP que bem entender

 

Se quiser flexibilidade, um host compartilhado não é uma boa opção. Eles se interessam a atender à maioria, que só precisa de um PHP simples (tem host aí usando PHP 5.2 ainda) e um mysql qualquer.

 

Fazer o próprio framework é bom pra aprender bem PHP. Mas a longo prazo ele pode ficar obsoleto, pois só terá você para manter e atualizar o projeto. Para sistemas grandes, acho melhor usar um framework que tenha a contribuição da comunidade.

O Laravel 5.1 é LTS. Você ficará tempos sem se preocupar com major updates

Compartilhar este post


Link para o post
Compartilhar em outros sites

VPS está aí. Digital Ocean, AWS, Rackspace... tudo barato e de qualidade. Configura do jeito que quiser, com a versão do PHP que bem entender

 

Se quiser flexibilidade, um host compartilhado não é uma boa opção. Eles se interessam a atender à maioria, que só precisa de um PHP simples (tem host aí usando PHP 5.2 ainda) e um mysql qualquer.

 

Fazer o próprio framework é bom pra aprender bem PHP. Mas a longo prazo ele pode ficar obsoleto, pois só terá você para manter e atualizar o projeto. Para sistemas grandes, acho melhor usar um framework que tenha a contribuição da comunidade.

O Laravel 5.1 é LTS. Você ficará tempos sem se preocupar com major updates

 

Como eu disse, meus clientes estão em compartilhados e para eles isso já é o suficiente, os projetos são pequenos.

 

Usar uma VPS exigiria que eles me pagasem um R$ mensam para que eu gerencie toda infra.

 

Eu citei que não estou fazendo meu framework do zero, eu estou utilizando Libs conhecidas e quando elas forem subindo de versão minha framework estaria sempre atualizada tabem.

 

Eu dei uma boa olhada no código do Laravel, e adivinha, quase tudo nele é código de terceiros, o Taylor Otwell (criador do laravel) só juntou as Libs de uma forma facil e inteligente.

 

Gosto muito do Laravel ele me agrada muito mas achei lento para fazer pequenas coisas como CMS e APP menores rodando em server compartilhados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe!

Apesar que você possui Know-how muito amplo, mas pensa como Freelancer, se tem uma carteira de clientes, e ainda quer coloca-las em hosts compartilhados qualquer, está deixando dinheiro na mesa, Beraldo já disse no post #5 o que realmente você precisa, existe lá fora hosts com suporte a php 5.6.X a partir de $1.99

Eu particularmente contrataria um Cloud a partir de $5, e começava um negócio lucrativo e não me preocuparia em criar outro Framework.

 

Ai você fala, mais $5 mês é muita grana, ok comece de graça!

 

http://aws.amazon.com/pt/free/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe!

 

Apesar que você possui Know-how muito amplo, mas pensa como Freelancer, se tem uma carteira de clientes, e ainda quer coloca-las em hosts compartilhados qualquer, está deixando dinheiro na mesa, Beraldo já disse no post #5 o que realmente você precisa, existe lá fora hosts com suporte a php 5.6.X a partir de $1.99

 

Eu particularmente contrataria um Cloud a partir de $5, e começava um negócio lucrativo e não me preocuparia em criar outro Framework.

 

Ai você fala, mais $5 mês é muita grana, ok comece de graça!

 

http://aws.amazon.com/pt/free/

 

 

Willians eu concordo plenamente com você tb acho perda de tempo criar um framework. Mas no meu caso, sim eu sou um freelancer que atente várias empresas, e estas empresas já possuem seus clientes espalhados por ai em tudo quanto é host (hosts bons e outros ruins), e muitos clientes não querem migrar de seus hots porque gostam do atendimento ou tem medo de perderem os emais que estão todos em web mail. Eu já bati de frente com muitas empresas e clientes para tentar reverter a questão da hospedagem e fazer algo melhor, mas em muitos casos o cliente bate o pe e não quer migrar.

 

Em fim, a realidade que eu estou expondo é de 80% de muitos programadores por ai.

 

Mas o que eu estou tentando dizer desde o inicio não é sobre o Host, apesar do PHP depender disso, mas de frameworks que não rodam em Host compartilhado por causa da versão do PHP ou por causa de velocidade, e mesmo com cache de html no front o back end ainda seria lento.

 

O que eu estou tentando perguntar aqui, é até onde é viavel criar algo parecido do que o Alisson expos no 2 post, que é criar um framework com infra extrutura de outros, neste caso eu utilizaria as Libs mais rapidas e na versão que eu precisasse do PHP, criando assim um outro framework com componentes, e classes de outros.

 

Eu até utilizaria o Laravel 5 ou 4 que roda na maioria das hospedagems já que utiliza o PHP 5.4. Mas eu não acho profissional tentar empurrar ele em host compartilhado.

 

Eu já vi muita gente lá fora utiliza o microframework Slim e o Idiorm (um orm extreamente rapido e descente) para criar um framework MVC e utilizar isso em projetos com CMS e Ecommerces.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você quer fazer é possível tecnicamente? Sim! É viável do ponto de vista do bom senso? Depende da sua capacidade de manter... já vi uma centena de fw nascerem das premissas que você citou e não vi nenhum de fato durar muito. Eu particularmente não iria por este caminho, preferiria usar um fw "de prateleira" que já tenha uma comunidade e que eu tivesse certeza que:

1 - Atende as minhas necessidades;

2 - Terá um ciclo de vida longo o suficiente.

 

Enfim, este é apenas um dos vários pontos de vista possíveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.