PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / vendor / otgs / installer / includes / utilities / FP / Obj.php
woocommerce-multilingual / vendor / otgs / installer / includes / utilities / FP Last commit date
Traits 1 month ago Either.php 1 month ago Fns.php 1 month ago Invoker.php 1 month ago Logic.php 1 month ago Obj.php 1 month ago Relation.php 1 month ago Str.php 1 month ago Undefined.php 1 month ago functions.php 1 month ago
Obj.php
83 lines
1 <?php
2
3 namespace OTGS\Installer\FP;
4
5 use OTGS\Installer\Collection;
6 use OTGS\Installer\NullCollection;
7 use OTGS\Installer\Collect\Support\Macroable;
8
9 class Obj {
10 use Macroable;
11
12 public static function init() {
13 self::macro( 'prop', curryN( 2, function ( $key, $item ) {
14 return self::propOr( null, $key, $item );
15 } ) );
16
17 self::macro( 'propOr', curryN( 3, function ( $default, $key, $item ) {
18 if ( $item instanceof Collection && $item->get( $key ) instanceof NullCollection ) {
19 return $default;
20 }
21 if ( is_array( $item ) ) {
22 return array_key_exists( $key, $item ) ? $item[ $key ] : $default;
23 }
24 if ( is_object( $item ) ) {
25 if ( property_exists( $item, $key ) || isset( $item->$key ) ) {
26 return $item->$key;
27 } elseif ( is_numeric( $key ) ) {
28 return self::propOr( $default, $key, (array) $item );
29 } else {
30 return $default;
31 }
32 }
33 if ( is_null( $item ) ) {
34 return null;
35 }
36 throw( new \InvalidArgumentException( 'item should be a Collection or an array or an object' ) );
37 } ) );
38
39 self::macro( 'path', curryN( 2, function ( $path, $item ) {
40 return array_reduce( $path, flip( self::prop() ), $item );
41 } ) );
42
43 self::macro( 'pathOr', curryN( 3, function ( $default, $path, $item ) {
44 $result = Either::of( $item )
45 ->tryCatch( Obj::path( $path ) )
46 ->getOrElse( null );
47
48 return is_null( $result ) ? $default : $result;
49 } ) );
50
51 self::macro( 'hasPath', curryN( 2, function ( $path, $item ) {
52 $undefinedValue = new Undefined();
53 $currentElement = $item;
54
55 foreach ( $path as $pathProp ) {
56 $currentElement = Either::of( $currentElement )
57 ->tryCatch( self::propOr( $undefinedValue, $pathProp ) )
58 ->getOrElse( $undefinedValue );
59
60 if ( $undefinedValue === $currentElement ) {
61 return false;
62 }
63 }
64
65 return true;
66 } ) );
67
68 self::macro( 'has', curryN( 2, function ( $prop, $item ) {
69 if ( $item instanceof Collection ) {
70 return $item->has( $prop );
71 }
72 if ( is_array( $item ) ) {
73 return isset( $item[ $prop ] );
74 }
75 if ( is_object( $item ) ) {
76 return property_exists( $item, $prop );
77 }
78 throw( new \InvalidArgumentException( 'item should be a Collection or an array or an object' ) );
79 } ) );
80 }
81 }
82
83 Obj::init();