00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "Zend/zend_interfaces.h"
00014
00015 #include "ext/spl/spl_functions.h"
00016
00017 #include "onphp_core.h"
00018 #include "onphp_util.h"
00019
00020 #include "core/Base/Enumeration.h"
00021 #include "core/Base/Identifier.h"
00022 #include "core/Base/Identifiable.h"
00023 #include "core/Base/IdentifiableObject.h"
00024 #include "core/Base/Singleton.h"
00025 #include "core/Base/StaticFactory.h"
00026 #include "core/Base/Stringable.h"
00027 #include "core/Base/Named.h"
00028 #include "core/Base/NamedObject.h"
00029 #include "core/Base/Prototyped.h"
00030 #include "core/Base/Instantiatable.h"
00031
00032 #include "core/DB/Dialect.h"
00033 #include "core/DB/ImaginaryDialect.h"
00034
00035 #include "core/OSQL/Castable.h"
00036 #include "core/OSQL/DBValue.h"
00037 #include "core/OSQL/DialectString.h"
00038 #include "core/OSQL/FieldTable.h"
00039 #include "core/OSQL/SQLTableName.h"
00040 #include "core/OSQL/Query.h"
00041 #include "core/OSQL/QueryIdentification.h"
00042
00043 #include "core/Exceptions.h"
00044
00045 PHP_RINIT_FUNCTION(onphp_core)
00046 {
00047 return PHP_RINIT(Singleton)(INIT_FUNC_ARGS_PASSTHRU);
00048 }
00049
00050 PHP_RSHUTDOWN_FUNCTION(onphp_core)
00051 {
00052 return PHP_RSHUTDOWN(Singleton)(INIT_FUNC_ARGS_PASSTHRU);
00053 }
00054
00055 PHP_MINIT_FUNCTION(onphp_core)
00056 {
00057 REGISTER_ONPHP_INTERFACE(Stringable);
00058 REGISTER_ONPHP_INTERFACE(Identifiable);
00059 REGISTER_ONPHP_INTERFACE(Instantiatable);
00060 REGISTER_ONPHP_INTERFACE(Prototyped);
00061
00062 REGISTER_ONPHP_INTERFACE(Named);
00063 REGISTER_ONPHP_IMPLEMENTS(Named, Identifiable);
00064
00065 REGISTER_ONPHP_INTERFACE(DialectString);
00066 REGISTER_ONPHP_INTERFACE(SQLTableName);
00067 REGISTER_ONPHP_IMPLEMENTS(SQLTableName, DialectString);
00068
00069 REGISTER_ONPHP_INTERFACE(Query);
00070 REGISTER_ONPHP_IMPLEMENTS(Query, DialectString);
00071 REGISTER_ONPHP_IMPLEMENTS(Query, Identifiable);
00072 REGISTER_ONPHP_IMPLEMENTS(Query, Stringable);
00073
00074 REGISTER_ONPHP_STD_CLASS_EX(Identifier);
00075 REGISTER_ONPHP_PROPERTY(Identifier, "id", ZEND_ACC_PRIVATE);
00076 REGISTER_ONPHP_PROPERTY_BOOL(Identifier, "final", 0, ZEND_ACC_PRIVATE);
00077 onphp_ce_Identifier->ce_flags |= ZEND_ACC_FINAL_CLASS;
00078
00079 REGISTER_ONPHP_STD_CLASS_EX(IdentifiableObject);
00080 REGISTER_ONPHP_PROPERTY(IdentifiableObject, "id", ZEND_ACC_PROTECTED);
00081
00082 REGISTER_ONPHP_IMPLEMENTS(Identifier, Identifiable);
00083 REGISTER_ONPHP_IMPLEMENTS(IdentifiableObject, Identifiable);
00084
00085 REGISTER_ONPHP_SUB_CLASS_EX(NamedObject, IdentifiableObject);
00086 REGISTER_ONPHP_PROPERTY(NamedObject, "name", ZEND_ACC_PROTECTED);
00087 REGISTER_ONPHP_IMPLEMENTS(NamedObject, Named);
00088 onphp_ce_NamedObject->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00089
00090 REGISTER_ONPHP_SUB_CLASS_EX(Enumeration, NamedObject);
00091 REGISTER_ONPHP_PROPERTY(Enumeration, "names", ZEND_ACC_PROTECTED);
00092 onphp_ce_Enumeration->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00093
00094
00095 zend_class_implements(onphp_ce_Enumeration TSRMLS_CC, 1, zend_ce_serializable);
00096
00097 REGISTER_ONPHP_STD_CLASS_EX(Singleton);
00098 onphp_ce_Singleton->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00099
00100 REGISTER_ONPHP_STD_CLASS_EX(StaticFactory);
00101 onphp_ce_StaticFactory->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00102
00103 REGISTER_ONPHP_SUB_CLASS_EX(Dialect, Singleton);
00104 REGISTER_ONPHP_IMPLEMENTS(Dialect, Instantiatable);
00105 onphp_ce_Dialect->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00106
00107 REGISTER_ONPHP_SUB_CLASS_EX(ImaginaryDialect, Dialect);
00108 onphp_ce_ImaginaryDialect->ce_flags |= ZEND_ACC_FINAL_CLASS;
00109
00110 REGISTER_ONPHP_STD_CLASS_EX(Castable);
00111 REGISTER_ONPHP_PROPERTY(Castable, "cast", ZEND_ACC_PROTECTED);
00112 onphp_ce_Castable->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00113
00114 REGISTER_ONPHP_SUB_CLASS_EX(FieldTable, Castable);
00115 REGISTER_ONPHP_PROPERTY(FieldTable, "field", ZEND_ACC_PROTECTED);
00116 REGISTER_ONPHP_IMPLEMENTS(FieldTable, DialectString);
00117 onphp_ce_FieldTable->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00118
00119 REGISTER_ONPHP_SUB_CLASS_EX(DBValue, Castable);
00120 REGISTER_ONPHP_PROPERTY(DBValue, "value", ZEND_ACC_PRIVATE);
00121 REGISTER_ONPHP_IMPLEMENTS(DBValue, DialectString);
00122 onphp_ce_DBValue->ce_flags |= ZEND_ACC_FINAL_CLASS;
00123
00124 REGISTER_ONPHP_STD_CLASS_EX(QueryIdentification);
00125 REGISTER_ONPHP_IMPLEMENTS(QueryIdentification, Query);
00126 onphp_ce_QueryIdentification->ce_flags |= ZEND_ACC_EXPLICIT_ABSTRACT_CLASS;
00127
00128 return PHP_MINIT(Exceptions)(INIT_FUNC_ARGS_PASSTHRU);
00129 }