PHPackages                             stonks/datalayer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. stonks/datalayer

ActiveLibrary[Database &amp; ORM](/categories/database)

stonks/datalayer
================

O DataLayer é um componente para abstração de persistência para banco de dados, que usa PDO com prepared statements.

1.0.2(5y ago)0157MITPHPPHP ^7.2

Since Sep 23Pushed 5y ago1 watchersCompare

[ Source](https://github.com/giovannialo/datalayer)[ Packagist](https://packagist.org/packages/stonks/datalayer)[ Docs](https://github.com/giovannialo/datalayer)[ RSS](/packages/stonks-datalayer/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (3)DependenciesVersions (4)Used By (0)

DataLayer @Stonks
=================

[](#datalayer-stonks)

[![Maintainer](https://camo.githubusercontent.com/2c1bea16bcb8108cab4f1f11c14c806587c60f29d3dbad456319999045e076ea/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65722d4067696f76616e6e69616c6f6c6976656972612d626c75652e7376673f7374796c653d666c61742d737175617265)](https://www.facebook.com/giovannialoliveira)[![Source Code](https://camo.githubusercontent.com/011106faf6fb3e5879ef5d32e39d6f19bb0c1633ade9dde3064514811d652854/687474703a2f2f696d672e736869656c64732e696f2f62616467652f736f757263652d73746f6e6b732f646174616c617965722d626c75652e7376673f7374796c653d666c61742d737175617265)](https://github.com/giovannialo/datalayer)[![PHP from Packagist](https://camo.githubusercontent.com/093be0fb2acd427c716a02726c45b81d6c2f59c30c463706feb8d4728f0e6464/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f73746f6e6b732f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/stonks/datalayer)[![Latest Version](https://camo.githubusercontent.com/143c889919f8f2165e7836fdbd95baff6994ec5a8beed2b4aee6c35f6a28dd56/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f67696f76616e6e69616c6f2f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://github.com/giovannialo/datalayer/releases)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)[![Build](https://camo.githubusercontent.com/9f03b38be7e89ed35eb71419d822a6b88559cc06004df5c73e339de315c17ee1/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f6275696c642f672f67696f76616e6e69616c6f2f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/giovannialo/datalayer)[![Quality Score](https://camo.githubusercontent.com/c6c70f59438fb42048c7b64d0284f30d443eadcf25cf8fe34ece11c1ddc55415/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f67696f76616e6e69616c6f2f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/giovannialo/datalayer)[![Total Downloads](https://camo.githubusercontent.com/0bb4242a0efe00637933a18af955a35cff172f55d252e4e767178b5ace9521af/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73746f6e6b732f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/stonks/datalayer)

O DataLayer é um componente para abstração de persistência para banco de dados, que usa PDO com prepared statements para executar rotinas comuns como cadastrar, ler, editar e remover dados.

### Destaques

[](#destaques)

- Fácil de configurar
- Conecte-se com multiplos bancos de dados
- Abstração total do CRUD
- Crie modelos seguros
- Pronto para o composer
- Compatível com PSR-2

Instalação
----------

[](#instalação)

DataLayer está disponível via Composer:

```
"stonks/datalayer": "1.0.*"
```

ou execute

```
composer require stonks/datalayer
```

Documentação
------------

[](#documentação)

Para obter mais detalhes sobre como usar o DataLayer, consulte a pasta de amostra com detalhes no diretório do componente.

### Conexão

[](#conexão)

Para começar a usar o DataLayer, precisamos de uma conexão com o seu banco de dados. Para ver as conexões possíveis, acesse o [manual de conexões do PDO em PHP.net](https://www.php.net/manual/pt_BR/pdo.drivers.php)

Para conectar somente um banco de dados:

```
define('DATA_LAYER_CONFIG', [
	'driver' => 'mysql',
	'host' => 'localhost',
	'port' => '3306',
	'dbname' => 'datalayer_example',
	'username' => 'root',
	'passwd' => '',
	'options' => [
		PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
		PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
		PDO::ATTR_CASE => PDO::CASE_NATURAL,
	],
]);
```

Para conectar dois ou mais bancos de dados:

```
define('DATA_LAYER_CONFIG', [
	'db_1' => [ // Chave personalizada: faz referência ao datalayer_example_1
		'driver' => 'mysql',
		'host' => 'localhost',
		'port' => '3306',
		'dbname' => 'datalayer_example_1',
		'username' => 'root',
		'passwd' => '',
		'options' => [
			PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
			PDO::ATTR_CASE => PDO::CASE_NATURAL,
		],
	],
	0 => [ // Isto não é uma chave personalizada
		'driver' => 'mysql',
		'host' => 'localhost',
		'port' => '3306',
		'dbname' => 'datalayer_example_2', // Neste caso, a chave é o próprio nome do banco de dados
		'username' => 'root',
		'passwd' => '',
		'options' => [
			PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
			PDO::ATTR_CASE => PDO::CASE_NATURAL,
		],
	],
	// ...
]);
```

###### Chave personalizada *(int|string)*

[](#chave-personalizada-intstring)

Quando definida, deve ser utilizada nas classes de modelo para se conectar ao banco de dados definido em **dbname**.

### Classe Modelo

[](#classe-modelo)

O DataLayer é baseado em uma estrutura MVC com os padrões de projeto Layer Super Type e Active Record. Logo, para consumir, é necessário criar o modelo de sua tabela e herdar o DataLayer.

```
class User extends DataLayer
{
    public function __construct()
    {
        parent::__construct(string $entity, ?array $required = [], string $primary = 'id', mixed $timestamps = false, ?string $database = null);
    }
}
```

#### Parâmetros

[](#parâmetros)

###### entity *(obrigatório)*

[](#entity-obrigatório)

Nome da tabela.

###### required *(opcional, padrão: \[\])*

[](#required-opcional-padrão-)

Os nomes das colunas definidas como **NOT NULL**.

###### primary *(opcional, padrão: id)*

[](#primary-opcional-padrão-id)

Chave primária. Este parâmetro não pode ser **null**.

###### timestamps *(opcional, padrão: false)*

[](#timestamps-opcional-padrão-false)

Aceita os tipos booleano e string. É usado, especificamente, quando há colunas **created\_at** e/ou **updated\_at**.

*boolean*
**False**, se nenhuma das colunas existirem. **True**, se ambas existirem.

*string*
Se existir somente uma delas, especifique o seu nome.

###### database *(opcional, padrão: null)*

[](#database-opcional-padrão-null)

Nome do banco de dados ou chave personalizada(quando definida) ao qual este modelo se conectará.

Este parâmetro só deve ser especificado se **DATA\_LAYER\_CONFIG** for configurada para se conectar com dois ou mais bancos de dados.

#### find

[](#find)

Consulta no banco de dados.

```
