PHPackages                             jenyus/class-base-php - 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. [Framework](/categories/framework)
4. /
5. jenyus/class-base-php

ActiveLibrary[Framework](/categories/framework)

jenyus/class-base-php
=====================

El paquete provee una clase base para manejar algunas consultas de modelos de forma dinamica. Ademas de ya traer una estructura base para proyectos mvc

031PHP

Since Jul 9Pushed 10mo ago1 watchersCompare

[ Source](https://github.com/Jimmy2004S/jenyus-class-base-php)[ Packagist](https://packagist.org/packages/jenyus/class-base-php)[ RSS](/packages/jenyus-class-base-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Paquete PHP: jenyus/class-base-php
==================================

[](#paquete-php-jenyusclass-base-php)

Este paquete proporciona una clase base para realizar consultas dinámicas en bases de datos utilizando PHP y PDO.

Instalación
-----------

[](#instalación)

Puedes instalar este paquete a través de Composer.

1. Crea el archivo 'composer.json' en la raiz de tu proyecto

    ```
    {
       // Puedes dejarlo en blanco
    }

    ```
2. Instalar composer en su proyecto `composer install`
3. Permitir la compatibilidad con el paquete agregando la siguiente linea en el archivo composer.json

    `"minimum-stability": "dev"`
4. Ejecuta el siguiente comando en tu terminal:

    `composer require jenyus/class-base-php`

Uso básico
----------

[](#uso-básico)

Para comenzar a utilizar la clase `DynamicModel` proporcionada por este paquete, sigue estos pasos:

### 1. Configuración de la conexión a la base de datos

[](#1-configuración-de-la-conexión-a-la-base-de-datos)

Asegúrate de tener una instancia de PDO configurada correctamente para tu base de datos. Aquí tienes un ejemplo básico de cómo configurar la conexión usando el patron de diseño singleton:

```
namespace DataBase\Config;

class DB{
    private $schema;
    private $host;
    private $password;
    private $user;
    private static $instance = null;
    private $pdo;

    private function __construct()
    {
        $this->schema = 'nombre_de_la_bd';
        $this->host = 'localhost';
        $this->password = 'password';
        $this->user = 'user';

        try {
            $this->pdo = new \PDO("mysql:host=$this->host;dbname=$this->schema", $this->user, $this->password);
            $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
        } catch (\PDOException $e) {
            throw new \Exception("No se pudo conectar a la base de datos: " . $e->getMessage());
        }
    }

    public static function getConnection()
    {
        if (!self::$instance) {
            self::$instance = new DB();
        }
        return self::$instance->pdo;
    }
}
```

### 2. Extender de la clase del paquete (DynamicModel)

[](#2-extender-de-la-clase-del-paquete-dynamicmodel)

```
namespace App\Model;

use DataBase\Config\DB;
use Jenyus\Base\DynamicModel;

class User extends DynamicModel
{

    protected $table = 'users';
    public function __construct()
    {
        $this->connection = DB::getConnection();
         // Llama al constructor del padre (DynamicModel) pasando la conexion a tu base de datos
        parent::__construct($this->connection);
    }
}
```

### Realizar consultas:

[](#realizar-consultas)

Utiliza los métodos proporcionados por DynamicModel para ejecutar consultas en la base de datos. Aquí tienes algunos ejemplos:

```
// Crear una instancia del modelo
  $userModel = new User();

// Obtener todos los usuarios
$users = $userModel->all();

// Obtener un usuario por ID
$user = $userModel->find(1);
```

Métodos disponibles en DynamicModel y ejemplos de como usarlos
--------------------------------------------------------------

[](#métodos-disponibles-en-dynamicmodel-y-ejemplos-de-como-usarlos)

#### - SetTable($table)

[](#--settabletable)

Establece la tabla con la que trabajar.

#### - query($sql)

[](#--querysql)

Ejecuta una consulta SQL personalizada.

#### - all($columns = \['\*'\])

[](#--allcolumns--)

Ejecuta una consulta para obtener todos los registros y recibe como parametro opcional un arreglo con las columnas deseadas.

```
$users = $userModel->all(
   ['id', 'nombre', 'email']
);
```

#### - where($column, $value, $operator, $columns = \['\*'\])

[](#--wherecolumn-value-operator-columns--)

Ejecuta una consulta con una cláusula WHERE.

```
$users = $userModel->where('estado', 'activo')->get();

$users = $userModel->where('estado', 'activo', '!=',
   ['user_name', 'role']
)->get();

//Tambien puedes resumir las consultas con varios where
$users = $userModel->where('estado', 'activo'
)->where('role_id' , 2)
->orWhere('role_id' , 1)
->get();
```

#### - find($value, $columns = \['\*'\], $operator = '=', $column = 'id')

[](#--findvalue-columns---operator---column--id)

Ejecuta una consulta para encontrar un registro por ID u otra columna.

```
$user = $userModel->find(2)->first(); //Este es el uso mas simple, si se desea realizar otros metodos de busqueda se recomienda usar el metodo where ( aunque este metodo tambien permite algunos)
```

#### - insert($columns = \[\])

[](#--insertcolumns--)

Ejecuta una consulta de inserción en la base de datos. Recibe como parametro un array asociativo con las columnas y valores a insertar.

```
$id = $userModel->insert([
               'nombre' => 'Manuel',
               'email' => 'Suarez',
               'role' => 1
           ]);
```

#### - update($columns = \[\], $value, $operator = '=', $column = 'id')

[](#--updatecolumns---value-operator---column--id)

Ejecuta una consulta de actualización en la base de datos.

```
$id = $userModel->update([
               'nombre' => 'Manuel',
               'email' => 'Anaya',
               'role' => 2
           ], 44);
```

#### - delete($value, $operator = '=', $column = 'id')

[](#--deletevalue-operator---column--id)

Ejecuta una consulta de eliminación en la base de datos.

```
$bolean = $userModel->delete(44);
```

#### - login($columns = \[\])

[](#--logincolumns--)

Metodo para inicio de sesion con contraseñas encriptadas

```
   $response = $user->login([
       'email' => 'example.admin@gmail.com',
       'password' => 'admin'
   ]);
```

#### - generate($abilities, $name = 'auth\_token', $columns, $table) and revokarTokens($columns = \[\])

[](#--generateabilities-name--auth_token-columns-table-and-revokartokenscolumns--)

Invdalidar los tokens para las sessiones

```
   $token = $user->login([])
       ->generateToken(['admin', 'user'], 'mi_token');

   $boolean = $user->revokarToken($token);
   $boolean = $user->revokarTokens($token);
```

Manejo de Excepciones
---------------------

[](#manejo-de-excepciones)

Los métodos de `DynamicModel` pueden lanzar varias excepciones que es importante manejar para garantizar que tu aplicación pueda responder adecuadamente a diferentes tipos de errores. Aquí hay una lista de las excepciones comunes que puedes esperar y cómo manejarlas:

### Excepciones comunes

[](#excepciones-comunes)

- `InvalidArgumentException`: Se lanza cuando los argumentos proporcionados a un método no son válidos.
- `PDOException`: Se lanza cuando ocurre un error relacionado con la base de datos.
- `Exception`: Se lanza cuando ocurre un error interno no específico.

### Ejemplo de manejo de excepciones

[](#ejemplo-de-manejo-de-excepciones)

```
try {
    $userModel = new User();
    $users = $userModel->all();
} catch (InvalidArgumentException $e) {
    echo "Argumento inválido: " . $e->getMessage();
} catch (PDOException $e) {
    echo "Error en la base de datos: " . $e->getMessage();
} catch (Exception $e) {
    echo "Error interno: " . $e->getMessage();
}
```

Notas
=====

[](#notas)

### Columna created\_at

[](#columna-created_at)

- Las tablas en tu base de datos necesitan tener una columna llamada created\_at. La clase 'DynamicModel' maneja automaticamente, la fecha actual en la que se crea el registro.
- Si no estas usando esta columna puedes pasar en el metodo insert un 'false' como segundo parametro.

```
user->insert([] , false);
```

### Formas mas sencillas para usar los metodos

[](#formas-mas-sencillas-para-usar-los-metodos)

- Luego de haber extendido tu clase modelo de la clase 'DynamicModel' puedes usar las mismas instancias para hacer distintas consultas

```
namespace App\Model;

use DataBase\Config\DB;
use Jenyus\Base\DynamicModel;

class Model extends DynamicModel
{
   public function __construct($table)
   {
       $this->connection = DB::getConnection();
        // Llama al constructor del padre (DynamicModel) pasando la conexion a tu base de datos
       parent::__construct($this->connection);
       parent::setTable($this->table);
   }
}

$model = new Model('users')
$users = $model->all();

// Y luego podrias cambiar facilmente la tabla
$model->SetTable('students');
$students = $model->all();
```

### Metodos where

[](#metodos-where)

- No puedes llamar el metodo orWhere sin antes haber llamado el metodo where
- Si deseas selecionar las columnas a devolver en la consulta se recomienda hacerlo en el primer where

```
$users = $userModel->where('estado', 'activo'
)->where('role_id' , 2, ['id', 'user_name'])
->orWhere('role_id' , 1)
->get();
```

### Autenticacion

[](#autenticacion)

El metodo login() usa verificacion de contraseña encriptada (hashing Bcrypt) para su uso tiene debes.

- Metodo create() : Pasar el valor ya encriptado en el campo de contraseña, usando el mismo metodo de encriptacion que provee php:

```
password_hash($password, PASSWORD_BCRYPT);
```

Actualizaciones
---------------

[](#actualizaciones)

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/cba6085db745beb70cfe877934e0bb3d115d4801ad64e68edb8dc9dd902547ff?d=identicon)[Jimmy2004S](/maintainers/Jimmy2004S)

---

Top Contributors

[![Jimmy2004S](https://avatars.githubusercontent.com/u/114125845?v=4)](https://github.com/Jimmy2004S "Jimmy2004S (24 commits)")

### Embed Badge

![Health badge](/badges/jenyus-class-base-php/health.svg)

```
[![Health](https://phpackages.com/badges/jenyus-class-base-php/health.svg)](https://phpackages.com/packages/jenyus-class-base-php)
```

###  Alternatives

[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M532](/packages/laravel-passport)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

712181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)[laravel/pail

Easily delve into your Laravel application's log files directly from the command line.

91545.3M590](/packages/laravel-pail)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
