ตัวช่วยสำหรับการดำเนินการต่างๆ ด้วยประเภทข้อมูล PHP ตัวแปร และคอนเทนเนอร์
composer require smoren/type-tools
วิธี | คำอธิบาย | ข้อมูลโค้ด |
---|---|---|
getString | ส่งกลับสตริงที่ไม่ซ้ำของตัวแปรที่กำหนด | UniqueExtractor::getString($var, $strict) |
getHash | ส่งกลับสตริงแฮช md5 ที่ไม่ซ้ำกันของตัวแปรที่กำหนด | UniqueExtractor::getHash($var, $strict) |
วิธี | คำอธิบาย | ข้อมูลโค้ด |
---|---|---|
cast | ส่งวัตถุไปยังประเภทสัมพันธ์อื่น | ObjectTypeCaster::cast($sourceObject, $destinationClass) |
วิธี | คำอธิบาย | ข้อมูลโค้ด |
---|---|---|
getPropertyValue | ส่งกลับค่าของคุณสมบัติของวัตถุ | ObjectAccess::getPropertyValue($object, $propertyName) |
setPropertyValue | ตั้งค่าคุณสมบัติของวัตถุ | ObjectAccess::setPropertyValue($object, $propertyName, $value) |
hasReadableProperty | คืนค่าเป็นจริงหากวัตถุมีคุณสมบัติที่สามารถอ่านได้ตามชื่อหรือตามทะเยอทะยาน | ObjectAccess::hasReadableProperty($object, $propertyName) |
hasWritableProperty | คืนค่าเป็นจริงหากวัตถุมีคุณสมบัติที่สามารถเขียนได้ตามชื่อหรือตามทะเยอทะยาน | ObjectAccess::hasWritableProperty($object, $propertyName) |
hasPublicProperty | คืนค่าเป็นจริงหากวัตถุมีทรัพย์สินสาธารณะ | ObjectAccess::hasPublicProperty($object, $propertyName) |
hasPublicMethod | คืนค่าเป็นจริงหากวัตถุมีวิธีการแบบสาธารณะ | ObjectAccess::hasPublicMethod($object, $methodName) |
hasProperty | คืนค่าเป็นจริงหากวัตถุมีคุณสมบัติ | ObjectAccess::hasProperty($object, $propertyName) |
hasMethod | คืนค่าเป็นจริงหากวัตถุมีเมธอด | ObjectAccess::hasMethod($object, $methodName) |
วิธี | คำอธิบาย | ข้อมูลโค้ด |
---|---|---|
get | ส่งกลับค่าจากคอนเทนเนอร์ตามคีย์ | MapAccess::get($container, $key, $defaultValue) |
set | ตั้งค่าให้กับคอนเทนเนอร์ตามคีย์ | MapAccess::set($container, $key, $value) |
exists | คืนค่าเป็นจริงหากมีคีย์ที่เข้าถึงได้อยู่ในคอนเทนเนอร์ | MapAccess::exists($container, $key) |
เครื่องมือสำหรับการแยก ID และแฮชเฉพาะของตัวแปร PHP และโครงสร้างข้อมูล
ทำงานในสองโหมด: เข้มงวดและไม่เข้มงวด
ในโหมดเข้มงวด:
ในโหมดไม่เข้มงวด:
ส่งกลับสตริงที่ไม่ซ้ำของตัวแปรที่กำหนด
UniqueExtractor::getString(mixed $var, bool $strict): string
use Smoren TypeTools UniqueExtractor ;
$ intValue = 5 ;
$ floatValue = 5.0 ;
$ intValueStrictUniqueId = UniqueExtractor:: getString ( $ intValue , true );
$ floatValueStrictUniqueId = UniqueExtractor:: getString ( $ floatValue , true );
var_dump ( $ intValueStrictUniqueId === $ floatValueStrictUniqueId );
// false
$ intValueNonStrictUniqueId = UniqueExtractor:: getString ( $ intValue , false );
$ floatValueNonStrictUniqueId = UniqueExtractor:: getString ( $ floatValue , false );
var_dump ( $ intValueNonStrictUniqueId === $ floatValueNonStrictUniqueId );
// true
ส่งกลับสตริงแฮช md5 ที่ไม่ซ้ำกันของตัวแปรที่กำหนด
UniqueExtractor::getHash(mixed $var, bool $strict): string
use Smoren TypeTools UniqueExtractor ;
$ intValue = 5 ;
$ floatValue = 5.0 ;
$ intValueStrictHash = UniqueExtractor:: getHash ( $ intValue , true );
$ floatValueStrictHash = UniqueExtractor:: getHash ( $ floatValue , true );
var_dump ( $ intValueStrictHash === $ floatValueStrictHash );
// false
$ intValueNonStrictHash = UniqueExtractor:: getHash ( $ intValue , false );
$ floatValueNonStrictHash = UniqueExtractor:: getHash ( $ floatValue , false );
var_dump ( $ intValueNonStrictHash === $ floatValueNonStrictHash );
// true
เครื่องมือสำหรับการหล่อวัตถุประเภทต่างๆ
ส่งวัตถุไปยังประเภทสัมพันธ์อื่น (อัปคาสต์หรือดาวน์คาสต์)
ObjectTypeCaster::cast(object $sourceObject, string $destinationClass): mixed
use Smoren TypeTools ObjectTypeCaster ;
class ParentClass
{
public int $ a ;
protected int $ b ;
public function __construct ( int $ a , int $ b )
{
$ this -> a = $ a ;
$ this -> b = $ b ;
}
public function toArray (): array
{
return [ $ this -> a , $ this -> b ];
}
}
class ChildClass extends ParentClass
{
private $ c = null ;
public function __construct ( int $ a , int $ b , int $ c )
{
parent :: __construct ( $ a , $ b );
$ this -> c = $ c ;
}
public function toArray (): array
{
return [ $ this -> a , $ this -> b , $ this -> c ];
}
}
/* Downcast */
$ parentClassObject = new ParentClass ( 1 , 2 );
print_r ( $ parentClassObject -> toArray ());
// [1, 2]
$ castedToChildClass = ObjectTypeCaster:: cast ( $ parentClassObject , ChildClass::class);
print_r ( $ castedToChildClass -> toArray ());
// [1, 2, null]
var_dump ( get_class ( $ castedToChildClass ));
// ChildClass
/* Upcast */
$ childClassObject = new ChildClass ( 1 , 2 , 3 );
print_r ( $ childClassObject -> toArray ());
// [1, 2, 3]
$ castedToParentClass = ObjectTypeCaster:: cast ( $ childClassObject , ParentClass::class);
print_r ( $ castedToParentClass -> toArray ());
// [1, 2]
var_dump ( get_class ( $ castedToParentClass ));
// ParentClass
เครื่องมือสำหรับการสะท้อนและเข้าถึงคุณสมบัติและวิธีการของวัตถุ
ส่งกลับค่าของคุณสมบัติของวัตถุ
ObjectAccess::getPropertyValue(object $object, string $propertyName): mixed
สามารถเข้าถึงคุณสมบัติตามชื่อหรือโดยทะเยอทะยาน
พ่น SmorenTypeToolsExceptionsKeyError
หากคุณสมบัติไม่สามารถเข้าถึงได้
use Smoren TypeTools ObjectAccess ;
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
public function getPrivateProperty (): int
{
return $ this -> privateProperty ;
}
}
$ myObject = new MyClass ();
// Getting by name:
var_dump (ObjectAccess:: getPropertyValue ( $ myObject , ' publicProperty ' ));
// 1
// Getting by getter (getPrivateProperty()):
var_dump (ObjectAccess:: getPropertyValue ( $ myObject , ' privateProperty ' ));
// 2
ตั้งค่าคุณสมบัติของวัตถุ
ObjectAccess::setPropertyValue(object $object, string $propertyName, mixed $value): void
สามารถเข้าถึงทรัพย์สินตามชื่อหรือตามผู้กำหนด
พ่น SmorenTypeToolsExceptionsKeyError
หากคุณสมบัติไม่สามารถเข้าถึงได้ในการเขียน
use Smoren TypeTools ObjectAccess ;
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
public function setPrivateProperty ( int $ value ): void
{
$ this -> privateProperty = $ value ;
}
public function toArray (): array
{
return [ $ this -> publicProperty , $ this -> privateProperty ];
}
}
$ myObject = new MyClass ();
// Setting by name:
ObjectAccess:: setPropertyValue ( $ myObject , ' publicProperty ' , 11 );
// Setting by setter (setPrivateProperty()):
ObjectAccess:: getPropertyValue ( $ myObject , ' privateProperty ' , 22 );
print_r ( $ myObject -> toArray ());
// [11, 22]
คืนค่าเป็นจริงหากวัตถุมีคุณสมบัติที่สามารถอ่านได้โดยชื่อหรือโดยทะเยอทะยาน
ObjectAccess::hasReadableProperty(object $object, string $propertyName): bool
use Smoren TypeTools ObjectAccess ;
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
private int $ notAccessibleProperty = 3 ;
public function getPrivateProperty (): int
{
return $ this -> privateProperty ;
}
}
$ myObject = new MyClass ();
// Accessible by name:
var_dump (ObjectAccess:: hasReadableProperty ( $ myObject , ' publicProperty ' ));
// true
// Accessible by getter:
var_dump (ObjectAccess:: hasReadableProperty ( $ myObject , ' privateProperty ' ));
// true
// Not accessible:
var_dump (ObjectAccess:: hasReadableProperty ( $ myObject , ' notAccessibleProperty ' ));
// false
คืนค่าเป็นจริงหากวัตถุมีคุณสมบัติที่สามารถเขียนได้ตามชื่อหรือตามตัวตั้งค่า
ObjectAccess::hasWritableProperty(object $object, string $propertyName): bool
use Smoren TypeTools ObjectAccess ;
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
private int $ notAccessibleProperty = 3 ;
public function setPrivateProperty ( int $ value ): void
{
$ this -> privateProperty = $ value ;
}
}
$ myObject = new MyClass ();
// Accessible by name:
var_dump (ObjectAccess:: hasWritableProperty ( $ myObject , ' publicProperty ' ));
// true
// Accessible by setter:
var_dump (ObjectAccess:: hasWritableProperty ( $ myObject , ' privateProperty ' ));
// true
// Not accessible:
var_dump (ObjectAccess:: hasWritableProperty ( $ myObject , ' notAccessibleProperty ' ));
// false
คืนค่าเป็นจริงหากวัตถุมีทรัพย์สินสาธารณะ
ObjectAccess::hasPublicProperty(object $object, string $propertyName): bool
use Smoren TypeTools ObjectAccess ;
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
}
$ myObject = new MyClass ();
var_dump (ObjectAccess:: hasPublicProperty ( $ myObject , ' publicProperty ' ));
// true
var_dump (ObjectAccess:: hasPublicProperty ( $ myObject , ' privateProperty ' ));
// false
คืนค่าเป็นจริงหากวัตถุมีวิธีการแบบสาธารณะ
ObjectAccess::hasPublicMethod(object $object, string $methodName): bool
use Smoren TypeTools ObjectAccess ;
class MyClass {
public function publicMethod (): int
{
return 1 ;
}
private function privateMethod (): int
{
return 2 ;
}
}
$ myObject = new MyClass ();
var_dump (ObjectAccess:: hasPublicMethod ( $ myObject , ' publicMethod ' ));
// true
var_dump (ObjectAccess:: hasPublicMethod ( $ myObject , ' privateMethod ' ));
// false
คืนค่าเป็นจริงหากวัตถุมีคุณสมบัติ
ObjectAccess::hasProperty(object $object, string $propertyName): bool
use Smoren TypeTools ObjectAccess ;
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
}
$ myObject = new MyClass ();
var_dump (ObjectAccess:: hasProperty ( $ myObject , ' publicProperty ' ));
// true
var_dump (ObjectAccess:: hasProperty ( $ myObject , ' privateProperty ' ));
// true
var_dump (ObjectAccess:: hasProperty ( $ myObject , ' anotherProperty ' ));
// false
คืนค่าเป็นจริงหากวัตถุมีเมธอด
ObjectAccess::hasMethod(object $object, string $methodName): bool
use Smoren TypeTools ObjectAccess ;
class MyClass {
public function publicMethod (): int
{
return 1 ;
}
private function privateMethod (): int
{
return 2 ;
}
}
$ myObject = new MyClass ();
var_dump (ObjectAccess:: hasMethod ( $ myObject , ' publicMethod ' ));
// true
var_dump (ObjectAccess:: hasMethod ( $ myObject , ' privateMethod ' ));
// true
เครื่องมือสำหรับการเข้าถึงคอนเทนเนอร์ที่แตกต่างกันเหมือนแผนที่โดยใช้คีย์สตริง
สามารถเข้าถึง:
ส่งคืนค่าจากคอนเทนเนอร์ตามคีย์หรือค่าเริ่มต้น หากไม่มีคีย์หรือไม่สามารถเข้าถึงได้
โยน SmorenTypeToolsExceptionsKeyError
หากคีย์ไม่สามารถเข้าถึงได้
MapAccess::get(mixed $container, string $key, mixed $defaultValue = null): mixed
use Smoren TypeTools MapAccess ;
$ array = [
' a ' => 1 ,
];
var_dump (MapAccess:: get ( $ array , ' a ' , 0 ));
// 1
var_dump (MapAccess:: get ( $ array , ' b ' , 0 ));
// 0
var_dump (MapAccess:: get ( $ array , ' b ' ));
// null
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
private int $ notAccessibleProperty = 3 ;
public function getPrivateProperty (): int
{
return $ this -> privateProperty ;
}
}
$ myObject = new MyClass ();
// Accessible by name:
var_dump (MapAccess:: get ( $ myObject , ' publicProperty ' , 0 ));
// 1
// Accessible by getter:
var_dump (MapAccess:: get ( $ myObject , ' privateProperty ' ));
// 2
// Not accessible:
var_dump (MapAccess:: get ( $ myObject , ' notAccessibleProperty ' , - 1 ));
// -1
var_dump (MapAccess:: get ( $ myObject , ' notAccessibleProperty ' ));
// null
// Nonexistent:
var_dump (MapAccess:: get ( $ myObject , ' nonexistentProperty ' , - 1 ));
// -1
var_dump (MapAccess:: get ( $ myObject , ' nonexistentProperty ' ));
// null
ตั้งค่าให้กับคอนเทนเนอร์ตามคีย์
MapAccess::set(mixed $container, string $key, mixed $value): void
โยน SmorenTypeToolsExceptionsKeyError
หากคีย์ไม่สามารถเข้าถึงได้ในการเขียน
use Smoren TypeTools MapAccess ;
$ array = [
' a ' => 1 ,
];
MapAccess:: set ( $ array , ' a ' , 11 );
MapAccess:: set ( $ array , ' b ' , 22 );
print_r ( $ array );
// ['a' => 11, 'b' => 22]
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
public function setPrivateProperty ( int $ value ): void
{
$ this -> privateProperty = $ value ;
}
public function toArray (): array
{
return [ $ this -> publicProperty , $ this -> privateProperty ];
}
}
$ myObject = new MyClass ();
// Accessible by name:
MapAccess:: get ( $ myObject , ' publicProperty ' , 11 );
// Accessible by getter:
MapAccess:: get ( $ myObject , ' privateProperty ' , 22 );
print_r ( $ myObject -> toArray ());
// [11, 22]
คืนค่าเป็นจริงหากมีคีย์ที่เข้าถึงได้อยู่ในคอนเทนเนอร์
MapAccess::exists(mixed $container, string $key): bool
use Smoren TypeTools MapAccess ;
$ array = [
' a ' => 1 ,
];
var_dump (MapAccess:: exists ( $ array , ' a ' ));
// true
var_dump (MapAccess:: exists ( $ array , ' b ' ));
// false
class MyClass {
public int $ publicProperty = 1 ;
private int $ privateProperty = 2 ;
private int $ notAccessibleProperty = 3 ;
public function getPrivateProperty (): int
{
return $ this -> privateProperty ;
}
}
$ myObject = new MyClass ();
// Accessible by name:
var_dump (MapAccess:: exists ( $ myObject , ' publicProperty ' ));
// true
// Accessible by getter:
var_dump (MapAccess:: exists ( $ myObject , ' privateProperty ' ));
// true
// Not accessible:
var_dump (MapAccess:: get ( $ myObject , ' notAccessibleProperty ' ));
// false
// Nonexistent:
var_dump (MapAccess:: get ( $ myObject , ' nonexistentProperty ' , - 1 ));
// false
composer install
composer test-init
composer test
เครื่องมือประเภท PHP ได้รับอนุญาตภายใต้ใบอนุญาต MIT