carry0987/sanite

A PHP library that provide base CRUD structure and methods, using PDO.

1.3.7 2024-06-26 15:56 UTC

This package is auto-updated.

Last update: 2024-12-26 17:07:33 UTC


README

Packgist CI
Sanite is a PHP library that provide base CRUD structure and methods, using PDO.

Getting Started

Make sure you have Sanite installed. If not, you can install it with the following command:

composer require carry0987/sanite

After installation, you can include Sanite in your project and start using it.

Establishing a Database Connection

Use Sanite to establish a database connection:

use carry0987\Sanite\Sanite;

// Database connection settings
$config = array(
    'host' => 'mariadb',
    'database' => 'dev_sanite',
    'username' => 'test_user',
    'password' => 'test1234',
    'port' => 3306, // Optional
    'charset' => 'utf8mb4' // Optional
);

// Create a database connection
$sanite = new Sanite($config);

Using a Data Model

Create your own data models to perform CRUD operations. Here's an example of using UserModel to retrieve user data.

First, ensure your model extends DataReadModel (or corresponding DataCreateModel, DataDeleteModel, DataUpdateModel):

namespace carry0987\Sanite\Example;

use carry0987\Sanite\Models\DataReadModel;

class UserModel extends DataReadModel
{
    // Implement your methods, for example:
    public function getUserById(int $userId)
    {
        $queryArray = [
            'query' => 'SELECT * FROM user WHERE uid = ? LIMIT 1',
            'bind'  => 'i',  // This value needs to be relative when using DBUtil::getPDOType
        ];
        $dataArray = [$userId];

        return $this->getSingleData($queryArray, $dataArray);
    }

    public function getAllUsers()
    {
        $queryArray = [
            'query' => 'SELECT * FROM user'
        ];

        return $this->getMultipleData($queryArray);
    }
}

Then, you can use your model like so:

use carry0987\Sanite\Example\UserModel;

// Instantiate UserModel
$userModel = new UserModel($sanite);

// Retrieve user information for user with ID 1
$user = $userModel->getUserById(1);
$users = $userModel->getAllUsers();

print_r($user);
print_r($users);

Exception Handling

Sanite defines a specific exception class DatabaseException. Capture and handle it appropriately in your code:

try {
    // ... attempt some database operations ...
} catch (\carry0987\Sanite\Exceptions\DatabaseException $e) {
    // ... handle database exception ...
    echo "Error: " . $e->getMessage();
}