Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joomla-framework/model
Joomla Framework Model Package
https://github.com/joomla-framework/model
joomla joomla-framework model mvc php
Last synced: 3 months ago
JSON representation
Joomla Framework Model Package
- Host: GitHub
- URL: https://github.com/joomla-framework/model
- Owner: joomla-framework
- License: gpl-2.0
- Created: 2013-02-24T03:27:18.000Z (almost 12 years ago)
- Default Branch: 3.x-dev
- Last Pushed: 2024-09-03T21:59:24.000Z (5 months ago)
- Last Synced: 2024-09-24T11:18:53.107Z (5 months ago)
- Topics: joomla, joomla-framework, model, mvc, php
- Language: PHP
- Homepage:
- Size: 5.2 MB
- Stars: 2
- Watchers: 14
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# The Model Package [![Build Status](https://ci.joomla.org/api/badges/joomla-framework/model/status.svg?ref=refs/heads/3.x-dev)](https://ci.joomla.org/joomla-framework/model)
[![Latest Stable Version](https://poser.pugx.org/joomla/model/v/stable)](https://packagist.org/packages/joomla/model)
[![Total Downloads](https://poser.pugx.org/joomla/model/downloads)](https://packagist.org/packages/joomla/model)
[![Latest Unstable Version](https://poser.pugx.org/joomla/model/v/unstable)](https://packagist.org/packages/joomla/model)
[![License](https://poser.pugx.org/joomla/model/license)](https://packagist.org/packages/joomla/model)## Interfaces
### `Model\ModelInterface`
`Model\ModelInterface` is an interface that requires a class to be implemented with a `getState` and a `setState` method.
## Classes
# `Model\AbstractModel`
#### Construction
The contructor for a new `Model\AbstractModel` object takes an optional `Registry` object that defines the state of the model. If omitted, an empty `Registry` object will be assigned automatically.
#### Usage
The `Model\AbstractModel` class is abstract. All requirements of the interface are already satisfied by the base class.
```php
namespace MyApp;
use Joomla\Model\AbstractModel;
/**
* My custom model.
*
* @pacakge Examples
*
* @since 1.0
*/
class MyModel extends AbstractModel
{
/**
* Get the time.
*
* @return integer
*
* @since 1.0
*/
public function getTime()
{
return time();
}
}
```# `Model\AbstractDatabaseModel`
#### Construction
`Model\AbstractDatabaseModel` is extended from `Model\AbstractModel` and the contructor takes a required `Database\DatabaseDriver` object and an optional `Registry` object.
#### Usage
The `Model\AbstractDatabaseModel` class is abstract so cannot be used directly. It forms a base for any model that needs to interact with a database.
```php
namespace MyApp
use Joomla\Model;
use Joomla\Database;/**
* My custom database model.
*
* @package Examples
*
* @since 1.0
*/
class MyDatabaseModel extends Model\AbstractDatabaseModel
{
/**
* Get the content count.
*
* @return integer
*
* @since 1.0
* @throws RuntimeException on database error.
*/
public function getCount()
{
// Get the query builder from the internal database object.
$q = $this->db->getQuery(true);// Prepare the query to count the number of content records.
$q->select('COUNT(*)')->from($q->qn('#__content'));$this->db->setQuery($q);
// Execute and return the result.
return $this->db->loadResult();
}
}try
{
$driver = Database\DatabaseFactory::getInstance()->getDriver('mysqli');
$model = new MyDatabaseModel($driver);
$count = $model->getCount();
}
catch (RuntimeException $e)
{
// Handle database error.
}
```## Installation via Composer
Add `"joomla/model": "~3.0"` to the require block in your composer.json and then run `composer install`.
```json
{
"require": {
"joomla/model": "~3.0"
}
}
```Alternatively, you can simply run the following from the command line:
```sh
composer require joomla/model "~3.0"
```