Login   Register  
PHP Classes
elePHPant
Icontem

TypeSafeStruct

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us

  Author  
Picture of Tom Schaefer
Name: Tom Schaefer is available for providing paid consulting. Contact Tom Schaefer .
Packages: 39 Browse all classes by Tom Schaefer Browse all classes by
Country: Germany Germany - PHP jobs in Germany
Age: ???
All time rank: 1159 in Germany Germany
Week rank: 46 Up3 in Germany Germany Up
Innovation award
Innovation award
Nominee: 9x

Winner: 1x


  Detailed description   Download .zip .tar.gz  
A Case Study for getting PHP type safe.

This package can be used to manipulate type safe objects in a way that works with PHP caching extensions.

It provides base classes that can check whether the types of the values to assign variables of implementation subclasses are of the expected types.

The expected types are determined by the prefixes of private variables, so it works well even when using PHP compiled code cached extensions.

An additional class can serialize objects as XML documents or to insert them in database tables.


The goal of this class is not to replace ORM or other db classes. It shall replace
the stdClass when using mysql_fetch_object.

It returns a value type object for each column. There are a number of value types:
+ TString
+ TNumber
+ TBit
+ TEnum
+ TLob
+ TTimestamp
These value types have specific sets of methods. i.e. TTimestamp value types are working
internally with the php native DateTime class.
TString has a bunch of methods to manipulate the output string.

All value type method are fluently designed.





v0.2:
- introducing ValueType Objects:
+ TString (published)
+ TNumber (published)
+ TBit (published)
+ TEnum (published)
+ TLob (published)
+ TTimestamp (published)

C# like data objects.


SAMPLE:

class Model_City extends TypeSafeStruct {

private $int_ID;
private $char_Name;
private $char_CountryCode;
private $char_District;
private $int_Population;

public function __set($key,$value) {
$type = $this->getPropertyType($key);
if($type and $this->hasProperty($key)) {
$this->{$type."_".$key} = $value;
} else {
$this->{"set".$key}($value);
}
}

public function __get($key) {
return $this->{$key};
}

}


$link = mysql_connect('localhost', 'root', 'pwd');
if (!$link) die('no connection established: ' . mysql_error());

$db = mysql_select_db('dbase', $link);
if (!$db)die ('no able to use db: ' . mysql_error());

$result = mysql_query("SELECT * FROM City LIMIT 4;");
if(!$result) die("no result set: ". mysql_error());

while($row=mysql_fetch_object($result, "Model_City")){
echo $row->getName()->toUpper()->padRight(15);
echo $row->getCountryCode()->toUpper()->padRight(5);
echo $row->getDistrict()->toUpper()->padRight(15);
echo $row->getPopulation()->format(0,",",".");
echo "\n";
}

mysql_close($link);

  Classes of Tom Schaefer  >  TypeSafeStruct  >  Download .zip .tar.gz  >  Support forum Support forum  >  Blog Blog  >  RSS 1.0 feed RSS 2.0 feed Latest changes  
Name: TypeSafeStruct
Base name: struct
Description: Manipulate type safe objects
Version: 0.1
PHP version: 5.0
License: GNU General Public License (GPL)
All time users: 219 users
All time rank: 6623
Week users: 0 users
Week rank: 2018 Equal
 
  Groups   Rate classes User ratings   Dependencies  
  Applications   Related links   Files Files  

  Groups  
Group folder image XML XML parsing and generation View top rated classes
Group folder image PHP 5 Classes using PHP 5 specific features View top rated classes
Group folder image Databases Database management, accessing and searching View top rated classes
Group folder image Data types Modeling and manipulating data types View top rated classes


  Innovation Award  
PHP Programming Innovation award nominee
April 2009
Number 11
PHP 5 provides type hinting support that allows verifying the types of values passed to class function parameters, but it only supports checking parameters that expect object or array parameters.

This package provides an alternative solution for checking parameters of setter functions for many other types of values. It is based on the name of function that is called.

Manuel Lemos

  User ratings  
There are not enough user ratings to display for this class.

  Packages needed by this class  
Class Dependency Why it is needed
TString
Optional
since v0.2 TSS will support ValueType Objects. TString is the first kind of value type.
TNumber
Optional
Value Type Object
TBit
Optional
ValueTypeObject

  Applications that use this class  
No application links were specified for this class.
Add link image If you know an application of this package, send a message to the author to add a link here.

  Related links  
Link Description
POPO Php Objects by Jan Kneschke

  Files folder image Files  
File Role Description
Files folder imagever0.2 (10 files)
Plain text file TypedStruct.class.php Class Base class
Plain text file SerializeTypedStruct.class.php Class Sample Base class extension => serializes an object's properties
Plain text file TypeSafeStruct.class.php Class Base class extension
Accessible without login Plain text file sample.php Example as the name says
Accessible without login Plain text file baseobject_country.php Example persistent type safe model object operating with mysql sample world db
Accessible without login Plain text file readme.txt Doc. readme

  Files  /  Files folder image ver0.2  
File Role Description
  Accessible without login Plain text file sample.php Example sample console script running sql select
  Accessible without login Plain text file sampledate.php Example Working with timestamps
  Plain text file TBit.class.php Class ValueType Object
  Plain text file TEnum.class.php Class ValueType Object
  Plain text file TLob.class.php Class ValueType Object
  Plain text file TNumber.class.php Class ValueType Object
  Plain text file TString.class.php Class ValueType Object
  Plain text file TTimestamp.class.php Class ValueType Object
  Plain text file TypedStruct.class.php Class Typed Struct
  Plain text file TypeSafeStruct.class.php Class Type Safe Struct

Download all files: struct.tar.gz struct.zip
NOTICE: if you are using a download manager program like 'GetRight', please Login before trying to download this archive.