PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backup, Restore, Migration & Clone / 3.8.2
WP STAGING – WordPress Backup, Restore, Migration & Clone v3.8.2
4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Adapter / PhpAdapter.php
wp-staging / Framework / Adapter Last commit date
Database 2 years ago Database.php 2 years ago DateTimeAdapter.php 4 years ago Directory.php 2 years ago Maintenance.php 4 years ago PhpAdapter.php 2 years ago SourceDatabase.php 2 years ago WpAdapter.php 3 years ago
PhpAdapter.php
69 lines
1 <?php
2
3 namespace WPStaging\Framework\Adapter;
4
5 use Exception;
6
7 /**
8 * Class PhpAdapter
9 * Adapter class to make sure certain php functions have same behaviour across all PHP versions
10 *
11 * @package WPStaging\Framework\Adapter
12 */
13 class PhpAdapter
14 {
15 /**
16 * Verify that the content of the variable is callable
17 * is_callable doesn't return true if it is non static methods written statically in PHP 8,
18 * So we fixed that behaviour for PHP 8
19 *
20 * @param string|null $maybeCallable
21 * @return bool
22 */
23 public function isCallable($maybeCallable): bool
24 {
25 // Early bail if null
26 if ($maybeCallable === null) {
27 return false;
28 }
29
30 // Using is_callable for all callables in PHP < 8
31 // And functions and static methods in PHP >= 8
32 if (is_callable($maybeCallable)) {
33 return true;
34 }
35
36 // Early bail if method is not provided as static
37 if (strpos($maybeCallable, "::") === false) {
38 return false;
39 }
40
41 try {
42 list($class, $method) = explode('::', $maybeCallable, 2);
43 if (empty($class) || empty($method)) {
44 return false;
45 }
46
47 // check against only the public methods of class
48 return class_exists($class) && in_array($method, get_class_methods($class));
49 } catch (Exception $ex) {
50 return false;
51 }
52 }
53
54 /**
55 * @param string $maybeJsonString
56 * @return bool
57 */
58 public function jsonValidate(string $maybeJsonString): bool
59 {
60 // Only exists from PHP 8.3.0
61 if (function_exists('json_validate')) {
62 return json_validate($maybeJsonString); // phpcs:ignore
63 }
64
65 json_decode($maybeJsonString);
66 return json_last_error() === JSON_ERROR_NONE;
67 }
68 }
69