[PECL-CVS] [pecl-database-pdo_ibm] pdo-class-8.5: Bare minimum class stub for PDO in PHP 8.5

[email protected] (Calvin Buckley)
Newsgroups php.pecl.cvs
Message-ID <[email protected]>
Author: Calvin Buckley (NattyNarwhal)
Date: 2025-09-10T14:29:36-03:00

Commit: https://github.com/php/pecl-database-pdo_ibm/commit/9b038cb7fbfc7cb3771c7165056bd75f24833876
Raw diff: https://github.com/php/pecl-database-pdo_ibm/commit/9b038cb7fbfc7cb3771c7165056bd75f24833876.diff

Bare minimum class stub for PDO in PHP 8.5

This should probably be extended to PHP 8.4 as well.

Untested on i.

Changed paths:
  A  pdo_ibm.stub.php
  A  pdo_ibm_arginfo.h
  M  pdo_ibm.c


Diff:

diff --git a/pdo_ibm.c b/pdo_ibm.c
index a4236d7..8670de3 100644
--- a/pdo_ibm.c
+++ b/pdo_ibm.c
@@ -30,6 +30,10 @@
 #include "php_pdo_ibm.h"
 #include "php_pdo_ibm_int.h"
 
+#if PHP_MAJOR_VERSION >= 8
+#include "pdo_ibm_arginfo.h"
+#endif
+
 /* If you declare any globals in php_pdo_ibm.h uncomment this:
 */
 #ifdef PASE
@@ -40,6 +44,7 @@ ZEND_DECLARE_MODULE_GLOBALS(pdo_ibm)
 static int le_pdo_ibm;
 extern pdo_driver_t pdo_ibm_driver;	/* the registration table */
 
+static zend_class_entry *pdo_ibm_ce;
 
 #ifdef PASE /* PASE i5/OS start-up */
 #include <as400_protos.h>
@@ -105,6 +110,19 @@ static void php_pdo_ibm_init_globals(zend_pdo_ibm_globals *pdo_ibm_globals)
 /* }}} */
 #endif /* PASE */
 
+/* PDO_IBM used both SQL_ and I5_ as prefixes for constants */
+#if PHP_VERSION_ID >= 80500
+#define REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
+		REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "SQL_", "Pdo\\Ibm::", value)
+#define REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
+		REGISTER_PDO_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, "I5_", "Pdo\\Ibm::", value)
+#else
+#define REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
+		REGISTER_PDO_CLASS_CONST_LONG("SQL_" base_name, value)
+#define REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85(base_name, value) \
+		REGISTER_PDO_CLASS_CONST_LONG("I5_" base_name, value)
+#endif
+
 /* {{{ PHP_MINIT_FUNCTION
  */
 PHP_MINIT_FUNCTION(pdo_ibm)
@@ -116,32 +134,39 @@ PHP_MINIT_FUNCTION(pdo_ibm)
 #endif
 
 #ifndef PASE /* i5/OS no support trusted */
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_USE_TRUSTED_CONTEXT", (long) PDO_SQL_ATTR_USE_TRUSTED_CONTEXT);
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_TRUSTED_CONTEXT_USERID", (long) PDO_SQL_ATTR_TRUSTED_CONTEXT_USERID);	
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_TRUSTED_CONTEXT_PASSWORD", (long) PDO_SQL_ATTR_TRUSTED_CONTEXT_PASSWORD);
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_USE_TRUSTED_CONTEXT", (long) PDO_SQL_ATTR_USE_TRUSTED_CONTEXT);
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_TRUSTED_CONTEXT_USERID", (long) PDO_SQL_ATTR_TRUSTED_CONTEXT_USERID);
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_TRUSTED_CONTEXT_PASSWORD", (long) PDO_SQL_ATTR_TRUSTED_CONTEXT_PASSWORD);
 #else /* PASE i5/OS introduced (1.3.4) */
-	REGISTER_PDO_CLASS_CONST_LONG("I5_ATTR_DBC_SYS_NAMING", (long)PDO_I5_ATTR_DBC_SYS_NAMING);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DBC_SYS_NAMING", (long)PDO_I5_ATTR_DBC_SYS_NAMING);
 	
-	REGISTER_PDO_CLASS_CONST_LONG("I5_ATTR_COMMIT", (long)PDO_I5_ATTR_COMMIT);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_TXN_NO_COMMIT", (long)PDO_I5_TXN_NO_COMMIT);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_TXN_READ_UNCOMMITTED", (long)PDO_I5_TXN_READ_UNCOMMITTED);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_TXN_READ_COMMITTED", (long)PDO_I5_TXN_READ_COMMITTED);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_TXN_REPEATABLE_READ", (long)PDO_I5_TXN_REPEATABLE_READ);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_TXN_SERIALIZABLE", (long)PDO_I5_TXN_SERIALIZABLE);
-
-	REGISTER_PDO_CLASS_CONST_LONG("I5_ATTR_JOB_SORT", (long)PDO_I5_ATTR_JOB_SORT);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_ATTR_DBC_LIBL", (long)PDO_I5_ATTR_DBC_LIBL);
-	REGISTER_PDO_CLASS_CONST_LONG("I5_ATTR_DBC_CURLIB", (long)PDO_I5_ATTR_DBC_CURLIB);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_COMMIT", (long)PDO_I5_ATTR_COMMIT);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("TXN_NO_COMMIT", (long)PDO_I5_TXN_NO_COMMIT);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("TXN_READ_UNCOMMITTED", (long)PDO_I5_TXN_READ_UNCOMMITTED);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("TXN_READ_COMMITTED", (long)PDO_I5_TXN_READ_COMMITTED);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("TXN_REPEATABLE_READ", (long)PDO_I5_TXN_REPEATABLE_READ);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("TXN_SERIALIZABLE", (long)PDO_I5_TXN_SERIALIZABLE);
+
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_JOB_SORT", (long)PDO_I5_ATTR_JOB_SORT);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DBC_LIBL", (long)PDO_I5_ATTR_DBC_LIBL);
+	REGISTER_PDO_IBM_I5_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_DBC_CURLIB", (long)PDO_I5_ATTR_DBC_CURLIB);
 #endif /* PASE */
 
 	/* Client information variables */
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_INFO_USERID", (long) PDO_SQL_ATTR_INFO_USERID);
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_INFO_ACCTSTR", (long) PDO_SQL_ATTR_INFO_ACCTSTR);	
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_INFO_APPLNAME", (long) PDO_SQL_ATTR_INFO_APPLNAME);
-	REGISTER_PDO_CLASS_CONST_LONG("SQL_ATTR_INFO_WRKSTNNAME", (long) PDO_SQL_ATTR_INFO_WRKSTNNAME);
-	
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_INFO_USERID", (long) PDO_SQL_ATTR_INFO_USERID);
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_INFO_ACCTSTR", (long) PDO_SQL_ATTR_INFO_ACCTSTR);
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_INFO_APPLNAME", (long) PDO_SQL_ATTR_INFO_APPLNAME);
+	REGISTER_PDO_IBM_CLASS_CONST_LONG_DEPRECATED_ALIAS_85("ATTR_INFO_WRKSTNNAME", (long) PDO_SQL_ATTR_INFO_WRKSTNNAME);
+
+#if PHP_VERSION_ID >= 80500
+	pdo_ibm_ce = register_class_Pdo_Ibm(pdo_dbh_ce);
+	pdo_ibm_ce->create_object = pdo_dbh_new;
+
+	return php_pdo_register_driver_specific_ce(&pdo_ibm_driver, pdo_ibm_ce);
+#else
 	php_pdo_register_driver(&pdo_ibm_driver);
-	return TRUE;  
+	return TRUE;
+#endif
 }
 /* }}} */
 
diff --git a/pdo_ibm.stub.php b/pdo_ibm.stub.php
new file mode 100644
index 0000000..95003b3
--- /dev/null
+++ b/pdo_ibm.stub.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * @generate-class-entries 
+ */
+
+namespace Pdo {
+    /**
+     * @strict-properties
+     * @not-serializable
+     */
+    class Ibm extends \PDO
+    {
+        /** @cvalue PDO_SQL_ATTR_INFO_USERID */
+        public const int ATTR_INFO_USERID = UNKNOWN;
+
+        /** @cvalue PDO_SQL_ATTR_INFO_ACCTSTR */
+        public const int ATTR_INFO_ACCTSTR = UNKNOWN;
+
+        /** @cvalue PDO_SQL_ATTR_INFO_APPLNAME */
+	public const int ATTR_INFO_APPLNAME = UNKNOWN;
+
+        /** @cvalue PDO_SQL_ATTR_INFO_WRKSTNNAME */
+	public const int ATTR_INFO_WRKSTNNAME = UNKNOWN;
+
+#ifndef PASE
+        /** @cvalue PDO_SQL_ATTR_USE_TRUSTED_CONTEXT */
+        public const int ATTR_USE_TRUSTED_CONTEXT = UNKNOWN;
+
+        /** @cvalue PDO_SQL_ATTR_TRUSTED_CONTEXT_USERID */
+        public const int ATTR_TRUSTED_CONTEXT_USERID = UNKNOWN;
+
+        /** @cvalue PDO_SQL_ATTR_TRUSTED_CONTEXT_PASSWORD */
+        public const int ATTR_TRUSTED_CONTEXT_PASSWORD = UNKNOWN;
+#endif
+#ifdef PASE
+        /** @cvalue PDO_I5_ATTR_COMMIT */
+        public const int ATTR_COMMIT = UNKNOWN;
+
+        /** @cvalue PDO_I5_TXN_NO_COMMIT */
+	public const int TXN_NO_COMMIT = UNKNOWN;
+
+        /** @cvalue PDO_I5_TXN_READ_UNCOMMITTED */
+	public const int TXN_READ_UNCOMMITTED = UNKNOWN;
+
+        /** @cvalue PDO_I5_TXN_READ_COMMITTED */
+	public const int TXN_READ_COMMITTED = UNKNOWN;
+
+        /** @cvalue PDO_I5_TXN_REPEATABLE_READ */
+	public const int TXN_REPEATABLE_READ = UNKNOWN;
+
+        /** @cvalue PDO_I5_TXN_SERIALIZABLE */
+	public const int TXN_SERIALIZABLE = UNKNOWN;
+
+        /** @cvalue PDO_I5_ATTR_JOB_SORT */
+	public const int ATTR_JOB_SORT = UNKNOWN;
+
+        /** @cvalue PDO_I5_ATTR_DBC_LIBL */
+	public const int ATTR_DBC_LIBL = UNKNOWN;
+
+        /** @cvalue PDO_I5_ATTR_DBC_CURLIB */
+	public const int ATTR_DBC_CURLIB = UNKNOWN;
+#endif
+    }
+}
+
diff --git a/pdo_ibm_arginfo.h b/pdo_ibm_arginfo.h
new file mode 100644
index 0000000..379e1d8
--- /dev/null
+++ b/pdo_ibm_arginfo.h
@@ -0,0 +1,112 @@
+/* This is a generated file, edit the .stub.php file instead.
+ * Stub hash: d973ffba51a2d0ff794d8b86edfdf13aafddb615 */
+
+static zend_class_entry *register_class_Pdo_Ibm(zend_class_entry *class_entry_PDO)
+{
+	zend_class_entry ce, *class_entry;
+
+	INIT_NS_CLASS_ENTRY(ce, "Pdo", "Ibm", NULL);
+	class_entry = zend_register_internal_class_with_flags(&ce, class_entry_PDO, ZEND_ACC_NO_DYNAMIC_PROPERTIES|ZEND_ACC_NOT_SERIALIZABLE);
+
+	zval const_ATTR_INFO_USERID_value;
+	ZVAL_LONG(&const_ATTR_INFO_USERID_value, PDO_SQL_ATTR_INFO_USERID);
+	zend_string *const_ATTR_INFO_USERID_name = zend_string_init_interned("ATTR_INFO_USERID", sizeof("ATTR_INFO_USERID") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_INFO_USERID_name, &const_ATTR_INFO_USERID_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_INFO_USERID_name);
+
+	zval const_ATTR_INFO_ACCTSTR_value;
+	ZVAL_LONG(&const_ATTR_INFO_ACCTSTR_value, PDO_SQL_ATTR_INFO_ACCTSTR);
+	zend_string *const_ATTR_INFO_ACCTSTR_name = zend_string_init_interned("ATTR_INFO_ACCTSTR", sizeof("ATTR_INFO_ACCTSTR") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_INFO_ACCTSTR_name, &const_ATTR_INFO_ACCTSTR_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_INFO_ACCTSTR_name);
+
+	zval const_ATTR_INFO_APPLNAME_value;
+	ZVAL_LONG(&const_ATTR_INFO_APPLNAME_value, PDO_SQL_ATTR_INFO_APPLNAME);
+	zend_string *const_ATTR_INFO_APPLNAME_name = zend_string_init_interned("ATTR_INFO_APPLNAME", sizeof("ATTR_INFO_APPLNAME") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_INFO_APPLNAME_name, &const_ATTR_INFO_APPLNAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_INFO_APPLNAME_name);
+
+	zval const_ATTR_INFO_WRKSTNNAME_value;
+	ZVAL_LONG(&const_ATTR_INFO_WRKSTNNAME_value, PDO_SQL_ATTR_INFO_WRKSTNNAME);
+	zend_string *const_ATTR_INFO_WRKSTNNAME_name = zend_string_init_interned("ATTR_INFO_WRKSTNNAME", sizeof("ATTR_INFO_WRKSTNNAME") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_INFO_WRKSTNNAME_name, &const_ATTR_INFO_WRKSTNNAME_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_INFO_WRKSTNNAME_name);
+#if !defined(PASE)
+
+	zval const_ATTR_USE_TRUSTED_CONTEXT_value;
+	ZVAL_LONG(&const_ATTR_USE_TRUSTED_CONTEXT_value, PDO_SQL_ATTR_USE_TRUSTED_CONTEXT);
+	zend_string *const_ATTR_USE_TRUSTED_CONTEXT_name = zend_string_init_interned("ATTR_USE_TRUSTED_CONTEXT", sizeof("ATTR_USE_TRUSTED_CONTEXT") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_USE_TRUSTED_CONTEXT_name, &const_ATTR_USE_TRUSTED_CONTEXT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_USE_TRUSTED_CONTEXT_name);
+
+	zval const_ATTR_TRUSTED_CONTEXT_USERID_value;
+	ZVAL_LONG(&const_ATTR_TRUSTED_CONTEXT_USERID_value, PDO_SQL_ATTR_TRUSTED_CONTEXT_USERID);
+	zend_string *const_ATTR_TRUSTED_CONTEXT_USERID_name = zend_string_init_interned("ATTR_TRUSTED_CONTEXT_USERID", sizeof("ATTR_TRUSTED_CONTEXT_USERID") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_TRUSTED_CONTEXT_USERID_name, &const_ATTR_TRUSTED_CONTEXT_USERID_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_TRUSTED_CONTEXT_USERID_name);
+
+	zval const_ATTR_TRUSTED_CONTEXT_PASSWORD_value;
+	ZVAL_LONG(&const_ATTR_TRUSTED_CONTEXT_PASSWORD_value, PDO_SQL_ATTR_TRUSTED_CONTEXT_PASSWORD);
+	zend_string *const_ATTR_TRUSTED_CONTEXT_PASSWORD_name = zend_string_init_interned("ATTR_TRUSTED_CONTEXT_PASSWORD", sizeof("ATTR_TRUSTED_CONTEXT_PASSWORD") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_TRUSTED_CONTEXT_PASSWORD_name, &const_ATTR_TRUSTED_CONTEXT_PASSWORD_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_TRUSTED_CONTEXT_PASSWORD_name);
+#endif
+#if defined(PASE)
+
+	zval const_ATTR_COMMIT_value;
+	ZVAL_LONG(&const_ATTR_COMMIT_value, PDO_I5_ATTR_COMMIT);
+	zend_string *const_ATTR_COMMIT_name = zend_string_init_interned("ATTR_COMMIT", sizeof("ATTR_COMMIT") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_COMMIT_name, &const_ATTR_COMMIT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_COMMIT_name);
+
+	zval const_TXN_NO_COMMIT_value;
+	ZVAL_LONG(&const_TXN_NO_COMMIT_value, PDO_I5_TXN_NO_COMMIT);
+	zend_string *const_TXN_NO_COMMIT_name = zend_string_init_interned("TXN_NO_COMMIT", sizeof("TXN_NO_COMMIT") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_TXN_NO_COMMIT_name, &const_TXN_NO_COMMIT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_TXN_NO_COMMIT_name);
+
+	zval const_TXN_READ_UNCOMMITTED_value;
+	ZVAL_LONG(&const_TXN_READ_UNCOMMITTED_value, PDO_I5_TXN_READ_UNCOMMITTED);
+	zend_string *const_TXN_READ_UNCOMMITTED_name = zend_string_init_interned("TXN_READ_UNCOMMITTED", sizeof("TXN_READ_UNCOMMITTED") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_TXN_READ_UNCOMMITTED_name, &const_TXN_READ_UNCOMMITTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_TXN_READ_UNCOMMITTED_name);
+
+	zval const_TXN_READ_COMMITTED_value;
+	ZVAL_LONG(&const_TXN_READ_COMMITTED_value, PDO_I5_TXN_READ_COMMITTED);
+	zend_string *const_TXN_READ_COMMITTED_name = zend_string_init_interned("TXN_READ_COMMITTED", sizeof("TXN_READ_COMMITTED") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_TXN_READ_COMMITTED_name, &const_TXN_READ_COMMITTED_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_TXN_READ_COMMITTED_name);
+
+	zval const_TXN_REPEATABLE_READ_value;
+	ZVAL_LONG(&const_TXN_REPEATABLE_READ_value, PDO_I5_TXN_REPEATABLE_READ);
+	zend_string *const_TXN_REPEATABLE_READ_name = zend_string_init_interned("TXN_REPEATABLE_READ", sizeof("TXN_REPEATABLE_READ") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_TXN_REPEATABLE_READ_name, &const_TXN_REPEATABLE_READ_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_TXN_REPEATABLE_READ_name);
+
+	zval const_TXN_SERIALIZABLE_value;
+	ZVAL_LONG(&const_TXN_SERIALIZABLE_value, PDO_I5_TXN_SERIALIZABLE);
+	zend_string *const_TXN_SERIALIZABLE_name = zend_string_init_interned("TXN_SERIALIZABLE", sizeof("TXN_SERIALIZABLE") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_TXN_SERIALIZABLE_name, &const_TXN_SERIALIZABLE_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_TXN_SERIALIZABLE_name);
+
+	zval const_ATTR_JOB_SORT_value;
+	ZVAL_LONG(&const_ATTR_JOB_SORT_value, PDO_I5_ATTR_JOB_SORT);
+	zend_string *const_ATTR_JOB_SORT_name = zend_string_init_interned("ATTR_JOB_SORT", sizeof("ATTR_JOB_SORT") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_JOB_SORT_name, &const_ATTR_JOB_SORT_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_JOB_SORT_name);
+
+	zval const_ATTR_DBC_LIBL_value;
+	ZVAL_LONG(&const_ATTR_DBC_LIBL_value, PDO_I5_ATTR_DBC_LIBL);
+	zend_string *const_ATTR_DBC_LIBL_name = zend_string_init_interned("ATTR_DBC_LIBL", sizeof("ATTR_DBC_LIBL") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_DBC_LIBL_name, &const_ATTR_DBC_LIBL_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_DBC_LIBL_name);
+
+	zval const_ATTR_DBC_CURLIB_value;
+	ZVAL_LONG(&const_ATTR_DBC_CURLIB_value, PDO_I5_ATTR_DBC_CURLIB);
+	zend_string *const_ATTR_DBC_CURLIB_name = zend_string_init_interned("ATTR_DBC_CURLIB", sizeof("ATTR_DBC_CURLIB") - 1, 1);
+	zend_declare_typed_class_constant(class_entry, const_ATTR_DBC_CURLIB_name, &const_ATTR_DBC_CURLIB_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+	zend_string_release(const_ATTR_DBC_CURLIB_name);
+#endif
+
+	return class_entry;
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.