2017 © Pedro Pelรกez
 

library handy

Handy Model class for amazing data magic.

image

andyfleming/handy

Handy Model class for amazing data magic.

  • Friday, June 24, 2016
  • by andyfleming
  • Repository
  • 1 Watchers
  • 4 Stars
  • 431 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 3 Forks
  • 1 Open issues
  • 13 Versions
  • 1 % Grown

The README.md

Handy

Handy is a utility for managing MySQL models, etc., (*1)

Quick Start

person.class.php, (*2)


class Person extends HandyModel { const TABLE_NAME = 'people'; }

example.php, (*3)


# โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“ # Setup # โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“ // Setup database handle $dbh = new mysqli( $host, $user, $pass, $database ); // Pass Handy the database handle Handy::setDefaultDB($dbh); // Require class require "person.class.php"; # โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“ # Usage # โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“โ€“ // Get each person over 30 $people = Person::lookupEach("age > 30"); // Handy returns an array of Person objects by ID (or empty array) if (count($people) > 0) { foreach ($people as $person) { echo $person->get('first_name').": ".$person->get('age'); echo "<br />"; } }

Comparison to traditional syntax

Add new person and fetch them back as a Person (class) object

Traditional:, (*4)

$db->query("INSERT INTO `people` SET `x`='y', `a`='b'");

$newPersonID = $db->insert_id;
$newPerson = $db->query("SELECT * FROM `people` WHERE `id` = '{$newPersonID}'");

$newPerson = $newPerson->fetch_object('Person');

With Handy:, (*5)

$newPerson = Person::create(array(
    'x' => 'y',
    'a' => 'b'
));

Documentation

Basic Usage

Basic Item Class

class Person extends HandyModel {

    const TABLE_NAME = 'people';

}

Item Creation

Person::create(array(
    'first_name' => 'John',
    'last_name' => 'Smith'
);

Item Lookup by ID

ModelName::lookupByID( ID ), (*6)

$person = Person::lookupByID(12);

// Returns single Person object or false
if (!$person) {
    echo "Person 12 was not found!";
} else {
    echo "Person 12's first name is ".$person->get('first_name');
}

Item Lookup by WHERE

ModelName::lookup( WHERE clause (optional) ), (*7)

$person = Person::lookup("`first_name`='Bob'");

// Returns single Person object or false

Multiple Item Lookup by WHERE

ModelName::lookupEach( WHERE clause (optional) ), (*8)

$people = Person::lookupEach("age > 30");

// Returns array of Person objects by ID or empty array

if (count($people) == 0) {
    echo 'No one found!';
} else {
    foreach ($people as $person) {
        echo $person->get('first_name').": ".$person->get('age');
        echo "<br />";
    }
}

/*

Array people
    17 => Object Person
    27 => Object Person
    28 => Object Person

*/

Item Lookup Random by WHERE

ModelName::lookupRandom( WHERE clause (optional) ), (*9)

$person = Person::lookupRandom("`age` > 30");

// Returns single (random) Person object or false

Advanded Usage

__extensionConstruct()

__postCreate()

Goals and the Future

  • Possibly migrate from MySQLI to PDO
  • Consider expanding functionality to include other database types other than MySQL
  • Add option to select only certain fields or JOIN
  • Show recommended syntax for adding custom lookup methods or overriding

Changelog

1.2.4 โ€“ Fixes for custom UID name., (*10)

1.2.3 โ€“ Changed $uidName to static property and implemented more fully., (*11)

1.2.2 โ€“ Added setEscaped method, (*12)

1.2.1 โ€“ Added support for using alternate unique id name. Should be set in HandyModel class extension with protected $uidName = 'alt_uid', (defaults to id)., (*13)

1.2.0 โ€“ Added support for multiple data sources. Limit 1 per model class. Handy::setDefaultDB($dbh) or Handy::setModelDB('ModelName',$dbh), (*14)

1.1.4 โ€” Fixes for new static methods access, (*15)

1.1.3 โ€” Changed database handle setup to Handy::setDB($databaseHandlerVariable);, (*16)

1.1.2 โ€” README udpates, (*17)

1.1.1 โ€” Fixes and updated README, (*18)

1.1.0 โ€” Simplification of calls. Static methods moved to main model class Handy::getByID('Person',12) is now Person::getByID(12), (*19)

1.0.1 โ€” Fixes, etc, (*20)

1.0.0 โ€” Initial Release, (*21)

The Versions

24/06 2016

dev-master

9999999-dev http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

30/08 2013

v1.2.4

1.2.4.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

29/05 2013

v1.2.3

1.2.3.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

24/04 2013

v1.2.2

1.2.2.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

05/04 2013

v1.2.1

1.2.1.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

08/03 2013

v1.2.0

1.2.0.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

28/01 2013

v1.1.4

1.1.4.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

28/01 2013

v1.1.3

1.1.3.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

28/01 2013

v1.1.2

1.1.2.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

27/01 2013

v1.1.1

1.1.1.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

27/01 2013

v1.1.0

1.1.0.0 http://github.com/andyfleming/handy

Handy Model class for amazing data magic.

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

27/01 2013

v1.0.1

1.0.1.0 http://github.com/andyfleming/handy

Handy Data/Model Management Utility for PHP

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql

27/01 2013

v1.0.0

1.0.0.0 http://github.com/andyfleming/handy

Handy Data/Model Management Utility for PHP

  Sources   Download

Apache 2.0

The Requires

  • php >=5.3.0

 

php model mysql