@@ -205,7 +205,7 @@ static char *dsn_from_uri(char *uri, char *buf, size_t buflen TSRMLS_DC)
205
205
206
206
/* {{{ proto object PDO::__construct(string dsn, string username, string passwd [, array options])
207
207
*/
208
- static PHP_FUNCTION ( dbh_constructor )
208
+ static PHP_METHOD ( PDO , dbh_constructor )
209
209
{
210
210
zval * object = getThis ();
211
211
pdo_dbh_t * dbh = NULL ;
@@ -498,6 +498,7 @@ static PHP_METHOD(PDO, prepare)
498
498
}
499
499
500
500
PDO_DBH_CLEAR_ERR ();
501
+ PDO_CONSTRUCT_CHECK ;
501
502
502
503
if (ZEND_NUM_ARGS () > 1 && SUCCESS == zend_hash_index_find (Z_ARRVAL_P (options ), PDO_ATTR_STATEMENT_CLASS , (void * * )& opt )) {
503
504
if (zend_hash_index_find (Z_ARRVAL_PP (opt ), 0 , (void * * )& item ) == FAILURE
@@ -582,6 +583,8 @@ static PHP_METHOD(PDO, beginTransaction)
582
583
{
583
584
pdo_dbh_t * dbh = zend_object_store_get_object (getThis () TSRMLS_CC );
584
585
586
+ PDO_CONSTRUCT_CHECK ;
587
+
585
588
if (dbh -> in_txn ) {
586
589
zend_throw_exception_ex (php_pdo_get_exception (), 0 TSRMLS_CC , "There is already an active transaction" );
587
590
RETURN_FALSE ;
@@ -610,6 +613,8 @@ static PHP_METHOD(PDO, commit)
610
613
{
611
614
pdo_dbh_t * dbh = zend_object_store_get_object (getThis () TSRMLS_CC );
612
615
616
+ PDO_CONSTRUCT_CHECK ;
617
+
613
618
if (!dbh -> in_txn ) {
614
619
zend_throw_exception_ex (php_pdo_get_exception (), 0 TSRMLS_CC , "There is no active transaction" );
615
620
RETURN_FALSE ;
@@ -631,6 +636,8 @@ static PHP_METHOD(PDO, rollBack)
631
636
{
632
637
pdo_dbh_t * dbh = zend_object_store_get_object (getThis () TSRMLS_CC );
633
638
639
+ PDO_CONSTRUCT_CHECK ;
640
+
634
641
if (!dbh -> in_txn ) {
635
642
zend_throw_exception_ex (php_pdo_get_exception (), 0 TSRMLS_CC , "There is no active transaction" );
636
643
RETURN_FALSE ;
@@ -658,6 +665,8 @@ static PHP_METHOD(PDO, setAttribute)
658
665
RETURN_FALSE ;
659
666
}
660
667
668
+ PDO_CONSTRUCT_CHECK ;
669
+
661
670
switch (attr ) {
662
671
case PDO_ATTR_ERRMODE :
663
672
convert_to_long (value );
@@ -736,6 +745,7 @@ static PHP_METHOD(PDO, getAttribute)
736
745
}
737
746
738
747
PDO_DBH_CLEAR_ERR ();
748
+ PDO_CONSTRUCT_CHECK ;
739
749
740
750
/* handle generic PDO-level atributes */
741
751
switch (attr ) {
@@ -792,6 +802,7 @@ static PHP_METHOD(PDO, exec)
792
802
RETURN_FALSE ;
793
803
}
794
804
PDO_DBH_CLEAR_ERR ();
805
+ PDO_CONSTRUCT_CHECK ;
795
806
ret = dbh -> methods -> doer (dbh , statement , statement_len TSRMLS_CC );
796
807
if (ret == -1 ) {
797
808
PDO_HANDLE_DBH_ERR ();
@@ -816,6 +827,7 @@ static PHP_METHOD(PDO, lastInsertId)
816
827
}
817
828
818
829
PDO_DBH_CLEAR_ERR ();
830
+ PDO_CONSTRUCT_CHECK ;
819
831
if (!dbh -> methods -> last_id ) {
820
832
pdo_raise_impl_error (dbh , NULL , "IM001" , "driver does not support lastInsertId()" TSRMLS_CC );
821
833
RETURN_FALSE ;
@@ -840,6 +852,7 @@ static PHP_METHOD(PDO, errorCode)
840
852
if (ZEND_NUM_ARGS ()) {
841
853
RETURN_FALSE ;
842
854
}
855
+ PDO_CONSTRUCT_CHECK ;
843
856
844
857
RETURN_STRING (dbh -> error_code , 1 );
845
858
}
@@ -854,6 +867,7 @@ static PHP_METHOD(PDO, errorInfo)
854
867
if (ZEND_NUM_ARGS ()) {
855
868
RETURN_FALSE ;
856
869
}
870
+ PDO_CONSTRUCT_CHECK ;
857
871
858
872
array_init (return_value );
859
873
add_next_index_string (return_value , dbh -> error_code , 1 );
@@ -879,6 +893,7 @@ static PHP_METHOD(PDO, query)
879
893
}
880
894
881
895
PDO_DBH_CLEAR_ERR ();
896
+ PDO_CONSTRUCT_CHECK ;
882
897
883
898
if (!pdo_stmt_instantiate (dbh , return_value , pdo_dbstmt_ce , NULL TSRMLS_CC )) {
884
899
pdo_raise_impl_error (dbh , NULL , "HY000" , "failed to instantiate user supplied statement class" TSRMLS_CC );
@@ -948,6 +963,7 @@ static PHP_METHOD(PDO, quote)
948
963
}
949
964
950
965
PDO_DBH_CLEAR_ERR ();
966
+ PDO_CONSTRUCT_CHECK ;
951
967
if (!dbh -> methods -> quoter ) {
952
968
pdo_raise_impl_error (dbh , NULL , "IM001" , "driver does not support quoting" TSRMLS_CC );
953
969
RETURN_FALSE ;
@@ -995,7 +1011,7 @@ static PHP_METHOD(PDO, getAvailableDrivers)
995
1011
996
1012
997
1013
function_entry pdo_dbh_functions [] = {
998
- PHP_ME_MAPPING ( __construct , dbh_constructor , NULL )
1014
+ ZEND_MALIAS ( PDO , __construct , dbh_constructor , NULL , ZEND_ACC_PUBLIC )
999
1015
PHP_ME (PDO , prepare , NULL , ZEND_ACC_PUBLIC )
1000
1016
PHP_ME (PDO , beginTransaction ,NULL , ZEND_ACC_PUBLIC )
1001
1017
PHP_ME (PDO , commit , NULL , ZEND_ACC_PUBLIC )
@@ -1132,7 +1148,6 @@ void pdo_dbh_init(TSRMLS_D)
1132
1148
INIT_CLASS_ENTRY (ce , "PDO" , pdo_dbh_functions );
1133
1149
pdo_dbh_ce = zend_register_internal_class (& ce TSRMLS_CC );
1134
1150
pdo_dbh_ce -> create_object = pdo_dbh_new ;
1135
- pdo_dbh_ce -> constructor -> common .fn_flags |= ZEND_ACC_FINAL ;
1136
1151
1137
1152
memcpy (& pdo_dbh_object_handlers , & std_object_handlers , sizeof (zend_object_handlers ));
1138
1153
pdo_dbh_object_handlers .get_method = dbh_method_get ;
0 commit comments