PHPackages                             nttech/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. nttech/datalayer

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

nttech/datalayer
================

The data layer is a persistent abstraction component of your database that PDO

v1.0.5(2y ago)041MITPHPPHP &gt;=8.0

Since Jul 1Pushed 2y ago1 watchersCompare

[ Source](https://github.com/netocastro/datalayer)[ Packagist](https://packagist.org/packages/nttech/datalayer)[ Docs](https://www.mundauvalley.com)[ RSS](/packages/nttech-datalayer/feed)WikiDiscussions master Synced today

READMEChangelog (6)DependenciesVersions (7)Used By (0)

DataLayer @NTTech
=================

[](#datalayer-nttech)

[![Maintainer](https://camo.githubusercontent.com/25a2cd559c2ff417875f734433ee288710fe9c494e76b506e5ba57453df3efe6/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e65722d406e65746f63617374726f2d626c75652e7376673f7374796c653d666c61742d737175617265)](https://www.facebook.com/neto.castro.739)[![Source Code](https://camo.githubusercontent.com/f3a1dfde6b57d84152597048d4f9106aa022c7343d0613f413b61bda6ae5d763/687474703a2f2f696d672e736869656c64732e696f2f62616467652f736f757263652d6e74746563682f646174616c617965722d626c75652e7376673f7374796c653d666c61742d737175617265)](https://github.com/netocastro/datalayer)[![PHP from Packagist](https://camo.githubusercontent.com/eac2ea2ee40d82f8f3c40481771060e8dd23d526735e260c0e7cf08bd73ea939/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6e74746563682f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nttech/datalayer)[![Latest Version](https://camo.githubusercontent.com/96e32786de0a1f9923f3b5653757b8c2274b7063ceaa01e8a9ab422868293ba6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6e65746f63617374726f2f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nttech/datalayer/releases)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)[![Build](https://camo.githubusercontent.com/f5c8cab1952b92595b42eb2afb5fbec358464c9cce9a688b688b45a6c0ccc085/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f6275696c642f672f6e65746f63617374726f2f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/nttech/datalayer)[![Quality Score](https://camo.githubusercontent.com/61a3745fd892a408eaa8890ea6b1b75e3e6e6da02a2d2447783cdc03ecece1a2/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f6e65746f63617374726f2f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/nttech/datalayer)[![Total Downloads](https://camo.githubusercontent.com/375e6e090564142a00a33643dd9e853c2eae5c93ee0f189ed07b94a95ff2e47c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6e74746563682f646174616c617965722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/nttech/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:

```
"nttech/datalayer": "v1.0.0"
```

ou execute

```
composer require nttech/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.

```
