ivir3zam / object-array-tools
适用于在PHP库中使用的功能齐全的数组行为抽象类
1.1.2
2017-01-03 06:37 UTC
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-14 19:31:27 UTC
README
这个库可以帮助您将对象作为一个具有更新、插入、删除、清理和过滤元素钩子的活动数组使用。
技术细节
这个库与PHP内置的ArrayObject类不同,这种差异在于这个库基于特性,因此您可以在已经扩展了其他类的类中使用它,其他差异是关于钩子,这些钩子帮助您为ObjectArray实现观察者模式,并且您还有许多与PHP原生数组函数等效的方法
安装
安装ObjectArrayTools的推荐方式是通过 Composer。
# Install Composer curl -sS https://getcomposer.org/installer | php
接下来,运行Composer命令安装Guzzle的最新稳定版本
php composer.phar require ivir3zam/object-array-tools
安装后,您需要包含Composer的自动加载器
require 'vendor/autoload.php';
然后您可以使用composer更新ObjectArrayTools
composer.phar update
示例
这个库可以帮助您将对象用作存储,并且不会影响您当前对象的功能
基本数组使用
此示例仅展示此库的基本用法
use IVIR3aM\ObjectArrayTools\AbstractActiveArray; class ActiveArray extends AbstractActiveArray {} $object = new ActiveArray(['Hello', 'World']); echo 'Number of elements: ' . count($object) . "\n"; foreach ($object as $string) { echo $string . ' '; } echo "\n"; $object[1] = 'Visitor'; foreach ($object as $string) { echo $string . ' '; } echo "\n"; /* OUTPUT: Number of elements: 2 Hello World Hello Visitor /*
将输入保存到数据库并在浏览器中显示输出
在此示例中,我们尝试创建一个数组,当您向其中写入数据时,对数据库进行过滤,当您从中读取数据时,对HTML输出进行清理
use IVIR3aM\ObjectArrayTools\AbstractActiveArray; class DatabaseRecord extends AbstractActiveArray { protected function sanitizeInputHook($offset, $data) { // some strong operation of sanitizing $data needed, this is only a sample return mysqli_real_escape_string($link, $data); } protected function sanitizeOutputHook($offset, $data) { return htmlspecialchars($data); } protected function updateHook($offset, $data, $oldData) { // some strong operation of updating database process needed, this is only a sample mysqli_query($link, "UPDATE SomeTable SET `Data` = '{$data}' WHERE `ID` = " . intval($offset)); } protected function removeHook($offset, $oldData) { // some strong operation of updating database process needed, this is only a sample mysqli_query($link, "DELETE FROM SomeTable WHERE `ID` = " . intval($offset)); } protected function insertHook($offset, $data) { mysqli_query($link, "INSERT INTO SomeTable SET `ID` = " . intval($offset) . ", `Data` = '{$data}'"); } } $db = new DatabaseRecord(); $db[1] = "Lorem Ipsum <some>script</some>'; DELETE FROM SomeTable"; // mysqli_query($link, "INSERT INTO SomeTable SET `ID` = 1, `Data` = 'Lorem Ipsum <some>script</some>\'; DELETE FROM SomeTable'"); echo $db[1]; // Lorem Ipsum <some>script</some>'; DELETE FROM SomeTable
排序数组
您可以在本库中看到排序功能。在AbstractActiveArray类的文档中可以找到支持的函数的完整列表
use IVIR3aM\ObjectArrayTools\AbstractActiveArray; class ActiveArray extends AbstractActiveArray {} $object = new ActiveArray(['How', 'Are', 'You']); print_r($object->getData()); /* Array ( [0] => How [1] => Are [2] => You ) */ $object->sort(); print_r($object->getData()); /* Array ( [0] => Are [1] => How [2] => You ) */