Existe uma boa biblioteca de mapeamento de objeto-relacional para PHP?
Eu conheço o PDO / ADO, mas eles parecem fornecer apenas abstração das diferenças entre os fornecedores de banco de dados, não um mapeamento real entre o modelo de domínio e o modelo relacional. Estou procurando uma biblioteca PHP que funcione da mesma forma que o Hibernate para Java e o NHibernate para .NET.
Existem apenas dois bons: Doutrina e Propel . Nós somos a favor do Doctrine, e ele funciona bem com o Symfony . No entanto, se você estiver procurando por suporte ao banco de dados, além dos principais, precisará escrever seu próprio código.
fonte
O Axon ORM faz parte do Framework sem gordura - ele possui um mapeador instantâneo. Não há geradores de código. Nenhum arquivo de configuração XML / YAML estúpido . Ele lê o esquema do banco de dados diretamente do back-end, portanto, na maioria das operações CRUD , você nem precisa estender um modelo base. Ele funciona com todos os principais mecanismos de banco de dados suportados por DOP : MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL , etc.
Acima de tudo, o plug-in e a camada de acesso a dados que o acompanha são tão leves quanto a estrutura: 14 KB (Axon) + 6 KB (SQLdb). Sem gordura é apenas 55 KB.
fonte
$product->load('product_id=123')
em um exemplo.$product->load(array('product_id=:id',array(':id'=>123)));
Estou desenvolvendo o Pork.dbObject por conta própria. (Uma implementação simples do ORM do PHP e do Active Record) O principal motivo é que acho a maioria dos ORMs muito pesados.
O principal pensamento do Pork.dbObejct é ser leve e simples de configurar. Nenhum monte de arquivos XML, apenas uma chamada de função no construtor para ligá-lo e um addRelation ou addCustomRelation para definir uma relação com outro dbObject.
Dê uma olhada: Pork.dbObject
fonte
Tente Doctrine2 . É provavelmente a ferramenta ORM mais poderosa para PHP. Estou mencionando isso separadamente do Doctrine 1, porque é um software completamente diferente. Foi reescrito do zero, ainda está na fase beta, mas é utilizável agora e desenvolvido.
É um ORM muito complexo, mas bem projetado. Muita magia da Doutrina 1 original desapareceu. Ele fornece uma solução completa e você pode escrever seu próprio ORM sobre o Doctrine2 ou usar apenas uma de suas camadas .
fonte
Comecei com o Kohana e parece o mais próximo do Ruby on Rails sem invocar toda a complexidade de vários arquivos de configuração, como o Propel .
fonte
Confira o Outm ORM . É mais simples que o Propel e o Doctrine e funciona de maneira semelhante ao Hibernate, apenas com uma aparência mais PHP.
fonte
Eu realmente gosto do Propel , aqui você pode obter uma visão geral, a documentação é muito boa e pode ser obtida através do PEAR ou SVN.
Você só precisa de uma instalação funcional do PHP5 e do Phing para começar a gerar classes.
fonte
Encontrei classes relacionadas ao ORM na biblioteca PHP Flourish .
fonte
Você deve conferir Idiorm e Paris .
fonte
Dê uma chance ao dORM, um mapeador relacional de objetos para PHP 5 . Ele suporta todos os tipos de relacionamentos (1 para 1), (1 para muitos), (muitos para muitos) e tipos de dados. É completamente discreto: não é necessária geração de código ou extensão de classe. Na minha opinião, é superior a qualquer ORM existente, incluindo Doutrina e Propel. No entanto, ele ainda está na versão beta e pode mudar significativamente nos próximos dois meses. http://www.getdorm.com
Também possui uma curva de aprendizado muito pequena. Os três métodos principais que você usará são:
fonte
Atualmente, estou trabalhando no phpDataMapper , que é um ORM projetado para ter sintaxe simples como o projeto Datamapper do Ruby. Ainda está em desenvolvimento inicial, mas funciona muito bem.
fonte
Eu tive ótimas experiências com Idiorm e Paris . Idiorm é uma biblioteca ORM pequena e simples. Paris é uma implementação do Active Record igualmente simples, criada no Idiorm. É para PHP 5.2+ com DOP. É perfeito se você quer algo simples que você pode simplesmente inserir em um aplicativo existente.
fonte
Tentei o ORM da biblioteca do Flourish .
fonte
Até o lançamento do PHP 5.3, não espere ter um bom ORM. É uma limitação OO do PHP.
fonte
Meu amigo Kien e eu aprimoramos uma versão anterior de um ORM que ele havia escrito antes do PHP 5.3. Nós transportamos essencialmente o Active Record do Ruby on Rails para o PHP. Ainda faltam alguns dos principais recursos que desejamos, como transações, suporte à chave primária composta, mais alguns adaptadores (apenas o MySQL e o SQLite 3 funcionam no momento). Mas, estamos muito perto de terminar essas coisas. Você pode dar uma olhada no PHP ActiveRecord com o PHP 5.3 .
fonte
Experimente o PHP ADOdb.
Não posso dizer que é o melhor, porque não usei os outros. Mas é rápido, suporta Memcached e cache.
E é muitíssimo mais rápido que o DB / Select do Zend Framework .
fonte
Dê uma olhada no LEAP ORM for Kohana . Ele funciona com vários bancos de dados, incluindo DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL e SQLite . Com uma função de carregamento automático simples, ele pode funcionar com praticamente qualquer estrutura PHP. O código fonte está no GitHub em https://github.com/spadefoot/kohana-orm-leap . Você pode conferir os tutoriais do LEAP on-line.
A biblioteca ORM trabalha com chaves primárias não inteiras e chaves compostas. As conexões são gerenciadas por meio de um pool de conexões com o banco de dados e funcionam com consultas SQL brutas. O ORM ainda possui um construtor de consultas que simplifica a construção de instruções SQL.
fonte
Você pode conferir Repose se estiver se sentindo aventureiro. Como o Outlet , ele é modelado após o Hibernate .
Ainda é muito cedo em seu desenvolvimento, mas até agora as únicas restrições no modelo de domínio são que as classes não são marcadas como finais e as propriedades não são marcadas como privadas. Quando eu chegar ao PHP> = 5.3, tentarei implementar o suporte a propriedades particulares também.
fonte
Se você estiver procurando por um ORM que implemente o paradigma do Mapeador de Dados em vez do Active Record especificamente, sugiro que você dê uma olhada no GacelaPHP .
Recursos do Gacela:
Outras soluções ORM são muito inchadas ou têm limitações onerosas ao desenvolver algo remotamente complicado. O Gacela resolve as limitações da abordagem de registro ativo implementando o Padrão do Mapeador de Dados, mantendo o mínimo de inchaço usando o PDO para todas as interações com o banco de dados e o Memcached.
fonte
O MicroMVC possui um ORM de 13 KB que depende apenas de uma classe de banco de dados de 8 KB . Ele também retorna todos os resultados como objetos ORM e usa ligação estática tardia para evitar a incorporação de informações sobre a tabela e metadados do objeto atual em cada objeto. Isso resulta na sobrecarga ORM mais barata que existe.
Funciona com MySQL , PostgreSQL e SQLite .
fonte
ORM brasileiro: http://www.hufersil.com.br/lumine . Funciona com PHP 5.2 ou superior. Na minha opinião, é a melhor escolha para portugueses e brasileiros, pois possui documentação fácil de entender e muitos exemplos para download.
fonte
O Agile Toolkit possui sua própria implementação exclusiva de ORM / ActiveRecord e SQL dinâmico .
Introdução: http://agiletoolkit.org/intro/1
Sintaxe (registro ativo):
Sintaxe (SQL dinâmico):
Embora o SQL dinâmico e o Active Record / ORM possam ser usados diretamente, o Agile Toolkit os integra ainda mais à interface do usuário e à interface do usuário do jQuery . Isso é semelhante ao JSF, mas escrito em PHP puro.
Isso exibirá CRUD AJAXified com o modelo para funcionário.
fonte
NotORM
fonte
PHP ORM Faces Para extensão DOP. Veja PHP Faces Framework .
fonte
Veja http://code.google.com/p/lworm/ . É um sistema ORM realmente simples, mas poderoso, leve para PHP. Você também pode estendê-lo facilmente, se quiser.
fonte
Outro ótimo ORM PHP de código aberto que usamos é o PHPSmartDb . É estável e torna seu código mais seguro e limpo. A funcionalidade do banco de dados é a mais fácil que já usei no PHP 5.3.
fonte
A doutrina é provavelmente a sua melhor aposta. Antes do Doctrine, o DB_DataObject era essencialmente o único outro utilitário aberto.
fonte
Se você procura um ORM, como o Hibernate , deve consultar o PMO .
Ele pode ser facilmente integrado a uma arquitetura SOA (existe apenas uma classe de serviço da web a ser desenvolvida).
fonte