source: trunk/Common/Types/Type.php@ 385

Last change on this file since 385 was 385, checked in by chronos, 13 years ago
  • Upraveno: Sestavení navigačního řádku se nyní provádí postupným připojováním položek namísto globálního seznamu všeho.
File size: 3.9 KB
Line 
1<?php
2
3include(dirname(__FILE__).'/Base.php');
4include(dirname(__FILE__).'/Enumeration.php');
5include(dirname(__FILE__).'/Boolean.php');
6include(dirname(__FILE__).'/Integer.php');
7include(dirname(__FILE__).'/String.php');
8include(dirname(__FILE__).'/Text.php');
9include(dirname(__FILE__).'/OneToMany.php');
10include(dirname(__FILE__).'/OneToMany2.php');
11include(dirname(__FILE__).'/Date.php');
12include(dirname(__FILE__).'/Time.php');
13include(dirname(__FILE__).'/DateTime.php');
14include(dirname(__FILE__).'/Password.php');
15include(dirname(__FILE__).'/Float.php');
16include(dirname(__FILE__).'/Hyperlink.php');
17include(dirname(__FILE__).'/Hidden.php');
18include(dirname(__FILE__).'/File/File.php');
19include(dirname(__FILE__).'/GPS.php');
20include(dirname(__FILE__).'/IPv4Address.php');
21include(dirname(__FILE__).'/Color.php');
22
23class Type
24{
25 var $System;
26 var $TypeDefinitionList;
27
28 function __construct($System)
29 {
30 $this->System = $System;
31 $this->TypeDefinitionList = array
32 (
33 'Enumeration' => array('Name' => 'Enumeration', 'Class' => 'Enumeration', 'ParentType' => '', 'Parameters' => array()),
34 'Boolean' => array('Name' => 'Boolean', 'Class' => 'Boolean', 'ParentType' => '', 'Parameters' => array()),
35 'Integer' => array('Name' => 'Integer', 'Class' => 'Integer', 'ParentType' => '', 'Parameters' => array()),
36 'String' => array('Name' => 'String', 'Class' => 'String', 'ParentType' => '', 'Parameters' => array()),
37 'Text' => array('Name' => 'Text', 'Class' => 'Text', 'ParentType' => '', 'Parameters' => array()),
38 'Date' => array('Name' => 'Date', 'Class' => 'Date', 'ParentType' => '', 'Parameters' => array()),
39 'Time' => array('Name' => 'Time', 'Class' => 'Time', 'ParentType' => '', 'Parameters' => array()),
40 'DateTime' => array('Name' => 'DateTime', 'Class' => 'DateTime', 'ParentType' => '', 'Parameters' => array()),
41 'Password' => array('Name' => 'Password', 'Class' => 'Password', 'ParentType' => '', 'Parameters' => array()),
42 'Float' => array('Name' => 'Float', 'Class' => 'Float', 'ParentType' => '', 'Parameters' => array()),
43 'Hyperlink' => array('Name' => 'Hyperlink', 'Class' => 'Hyperlink', 'ParentType' => '', 'Parameters' => array()),
44 'Hidden' => array('Name' => 'Hidden', 'Class' => 'Hidden', 'ParentType' => '', 'Parameters' => array()),
45 'File' => array('Name' => 'File', 'Class' => 'File', 'ParentType' => '', 'Parameters' => array()),
46 'GPS' => array('Name' => 'GPS', 'Class' => 'GPS', 'ParentType' => '', 'Parameters' => array()),
47 'IPv4Address' => array('Name' => 'IPv4Address', 'Class' => 'IPv4Address', 'ParentType' => '', 'Parameters' => array()),
48 'OneToOne' => array('Name' => 'OneToOne', 'Class' => 'OneToOne', 'ParentType' => '', 'Parameters' => array()),
49 'OneToMany' => array('Name' => 'OneToMany', 'Class' => 'OneToMany', 'ParentType' => '', 'Parameters' => array()),
50 'Color' => array('Name' => 'Color', 'Class' => 'Color', 'ParentType' => '', 'Parameters' => array()),
51 );
52 }
53
54 function ExecuteTypeEvent($TypeName, $Event, $Parameters = array())
55 {
56 if(array_key_exists($TypeName, $this->TypeDefinitionList))
57 {
58 $Type = $this->TypeDefinitionList[$TypeName];
59 $TypeClass = 'Type'.$Type['Class'];
60 $TypeObject = new $TypeClass($this->System);
61 if(is_callable(array($TypeObject, $Event))) return($TypeObject->$Event($Parameters));
62 else return($TypeName.'->'.$Event.'('.serialize($Parameters).')');
63 } else return($TypeName);
64 }
65
66 function RegisterType($Name, $ParentType, $Parameters)
67 {
68 if($ParentType != '')
69 {
70 $Type = $this->TypeDefinitionList[$ParentType];
71 } else $Type = array();
72
73 $Type['Name'] = $Name;
74 $Type['Parameters'] = array_merge($Type['Parameters'], $Parameters);
75 $this->TypeDefinitionList[$Name] = $Type;
76 }
77
78 function GetTypeDefinition($TypeName)
79 {
80 return($this->TypeDefinitionList[$TypeName]);
81 }
82}
83
84
85?>
Note: See TracBrowser for help on using the repository browser.