Skip to content

Commit 9a429d4

Browse files
authored
Promote error "Memcached constructor was not called" to exception with PHP 8 (#465)
For consistency with other PHP 8 extensions.
1 parent f97b2e3 commit 9a429d4

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

php_memcached.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ static inline php_memc_object_t *php_memc_fetch_object(zend_object *obj) {
195195
php_memc_object_t* intern = NULL; \
196196
php_memc_user_data_t* memc_user_data = NULL;
197197

198+
#if PHP_VERSION_ID < 80000
198199
#define MEMC_METHOD_FETCH_OBJECT \
199200
intern = Z_MEMC_OBJ_P(object); \
200201
if (!intern->memc) { \
@@ -203,6 +204,16 @@ static inline php_memc_object_t *php_memc_fetch_object(zend_object *obj) {
203204
} \
204205
memc_user_data = (php_memc_user_data_t *) memcached_get_user_data(intern->memc); \
205206
(void)memc_user_data; /* avoid unused variable warning */
207+
#else
208+
#define MEMC_METHOD_FETCH_OBJECT \
209+
intern = Z_MEMC_OBJ_P(object); \
210+
if (!intern->memc) { \
211+
zend_throw_error(NULL, "Memcached constructor was not called"); \
212+
RETURN_THROWS(); \
213+
} \
214+
memc_user_data = (php_memc_user_data_t *) memcached_get_user_data(intern->memc); \
215+
(void)memc_user_data; /* avoid unused variable warning */
216+
#endif
206217

207218
static
208219
zend_bool s_memc_valid_key_binary(zend_string *key)

tests/bad_construct_8.phpt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@ class extended extends Memcached {
2020
}
2121

2222
error_reporting(E_ALL);
23-
$extended = new extended ();
24-
var_dump ($extended->setOption (Memcached::OPT_BINARY_PROTOCOL, true));
23+
try {
24+
$extended = new extended ();
25+
var_dump ($extended->setOption (Memcached::OPT_BINARY_PROTOCOL, true));
26+
} catch (Error $e) {
27+
echo $e->getMessage() . PHP_EOL;
28+
}
2529

2630
echo "OK" . PHP_EOL;
2731

2832
--EXPECTF--
2933
Memcached::__construct(): Argument #1 ($persistent_id) must be of type ?string, stdClass given
30-
31-
Warning: Memcached::setOption(): Memcached constructor was not called in %s
32-
NULL
34+
Memcached constructor was not called
3335
OK
3436

0 commit comments

Comments
 (0)