Pergunta

Eu estou trabalhando em um CMS PHP como projeto e eu estou tentando descobrir o que é a maneira mais conveniente de lidar com a funcionalidade CRUD em PHP.

O CMS é programado completamente em PHP processual (sem OOP - Eu sei que muitos de vocês não vai concordar com isso ...) e foi projetado manter tudo o mais simples e mais leve possível, bem como a criação de funções altamente reutilizáveis ??e trechos de código.

O CMS permite que vários módulos para ser instalado / ativado na base necessidades. Estes módulos descrevem diferentes tipos de conteúdo, então eu provavelmente vai acabar tendo algo como páginas, notícias, blogs só para citar alguns.

Para cada um destes tipos de conteúdo eu vou ter que criar as operações CRUD e agora estou tentando encontrar a maneira mais conveniente para alcançar este objectivo.

Uma exigência seria que a forma para cada um desses tipos de conteúdo está contido em um único arquivo externo (tanto para inserir e editar) e se há alguma maneira de integrar a validação de entrada do lado do servidor que seria um plus.

Foi útil?

Solução

operações por CRUD que você quer dizer apenas as consultas (tedioso) de banco de dados?

Você poderia facilmente configurar o seu banco de dados para que, exceto por alguns campos comuns entre tipos de conteúdo, todos os dados para um determinado tipo de conteúdo é armazenado como uma matriz associativa serializado num campo de texto.

Desta forma, você só precisa de 1 conjunto de consultas para CRUD qualquer tipo de conteúdo em particular desde que os dados passados ??para as funções CRUD é apenas cega serializado.

Por exemplo, digamos que declarar que título de conteúdo, criado / data atualizada, etiquetas, e uma breve descrição são considerados dados comuns. De lá, tem um blog e um tipo de conteúdo da página.

Gostaria que possivelmente criar uma tabela de banco de dados como tal:

CREATE TABLE `content` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR  NOT NULL,
  `short_description` TEXT  NOT NULL,
  `tags` TEXT ,
  `data` TEXT ,
  `content_type` INT  NOT NULL,
  `created_at` DATETIME  NOT NULL,
  `updated_at` DATETIME  NOT NULL,
  PRIMARY KEY (`id`)
)

(Vá em frente e assumir que vamos criar as tabelas de referência para content_type)

E enquanto o blog pode exigir dados como "pingbacks" ea página pode exigir nada, mas o corpo, você só armazenar a saída de algo como o abaixo exemplo de um blog:

$data = serialize(array(
    "body" => "Lorem ipsum",
    "pingbacks" => array()
));

Atualizações são fáceis, sempre que você pegar os dados do banco de dados que você unserialize os dados para a edição em uma forma seleccionada com base no tipo de conteúdo. Exibindo funciona da mesma maneira, basta pegar um modelo com base no tipo de conteúdo e enviá-lo a matriz de dados desserializado. O modelo nunca precisa se preocupar como os dados são armazenados, assim que ele recebe um $ dados [ 'Pingbacks'].

Quanto às suas formas, a minha sugestão é para quebrar a sua aliança anti OOP e encontrar uma biblioteca de geração de formulário. Se você pode extraí-lo do quadro, utilizando Zend_Form com Zend_Config e Zend_Validate do Zend Framework (todo o Zend_Config equivale a nesta situação é uma interface conveniente para arquivos INI carga e XML transversal e) torna a vida muito bom. Você pode ter seus arquivos XML definir o formulário para cada tipo de conteúdo, e tudo que você gostaria de fazer é apenas tornar o formulário em sua página (agarrando o XML baseado fora do tipo de conteúdo), agarrando os dados filtrados, removendo os "campos comuns" como nome, criados / datas atualizados, então serialização o que sobra no banco de dados. Nenhum conhecimento do esquema para um determinado tipo de conteúdo é necessária (a menos que você deseja ser rigoroso).

Embora como um pessoal de lado eu sugiro que você olhar para agarrar Zend_Form (com Zend_Validate e Zend_Config), bem como a utilização de Doutrina como uma camada de abstração ORM / banco de dados. Você pode achar que pelo menos Doutrina vai fazer a sua vida muito mais fácil quando se trata de operações em execução no banco de dados.

Outras dicas

Embora como um pessoal de lado eu sugiro que você olhar para agarrar Zend_Form (com Zend_Validate e Zend_Config), bem como a utilização de Doutrina como uma camada de abstração ORM / banco de dados. Você pode achar que pelo menos Doutrina vai fazer a sua vida muito mais fácil quando se trata de operações em execução no banco de dados.

Eu concordo com dcousineau. Por rolo seu próprio quando ele já está feito? Também gostaria de ter um olhar para Zend DB , e se você precisar um PHP4 e 5 solução PHP ADOdb .

Eu comecei um projeto acadêmico recentemente e tinha o mesmo desejo como você; eventualmente, eu fui com PHP ADODB.

Eu sugiro www.ajaxcrud.com - é fácil de usar, leve, e você fica instalado e funcionando em questão de segundos.

Você pode tentar este: http://xcrud.com , realmente útil

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top