English 中文(简体)
我在PHP中是否有办法说明,一个阵列只包含某些类型的物体?
原标题:Is there a way in PHP for me to specify that an array will consist only of certain types of objects?
  • 时间:2011-02-23 21:45:10
  •  标签:
  • php
  • arrays

例如,假定我有一只 object子,我希望我的阵列只由 Car组成。 是否有一些使我能够这样做的辛子?

最佳回答

无PHP没有强有力的打字。

我认为,采取这种行动的唯一途径是,拥有一个能够达到C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.A.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.C.,

问题回答

箱子中,除此以外,您可执行ArrayObject,载于,Car>/code>等,并优先于ArrayO的附录方法,但仅接受Car>>。 这样,只要你添加附有附本的物品,你就只能接受<代码>Car部分的物项。

您可以实施如下基本清单类别,但只能允许在名单上添加使用<代码>addItem功能的项目。 您也许会增加其功能。 然后,在<代码> $list->items上开展任何具体业务,你希望使用标准的php阵列功能。

class list()
{
    function __construct($type)
    {
        $this->type = $type;
        $this->items = array();
    }

    public function addItem($item)
    {
        if( get_class($item) == $type )
        {
            $this->items[] = $item;
        }
        else
        {
            return false;
        }
    }
}

这是一种简单的解决办法,它利用阵列过滤器去除任何 are的物体。

// Return TRUE to keep the value, FALSE otherwise
function car_filter($val) {
    return ($val instanceof Car);
}

$cars = array( ... ); // an array of cars

// Apply the filter
$cars = array_filter($cars, "car_filter")

简单地总结一下你想要将汽车储存在一种带有色体的APIC:

class Cars implements IteratorAggregate
{
    protected $storage;

    public function __construct(SplObjectStorage $storage)
    {
        $this->storage = $storage;
    }
    public function addCar(Car $car)
    {
        $this->storage->attach($car);
    }
    public function removeCar(Car $car)
    {
        $this->storage->detach($car);
    }
    public function getIterator()
    {
        return clone $this->storage;
    }
    // …
}

您是否使用 > <, 或>>>>>>>>>>taltary <<>>>>>>>tc>>>>>> >>>。 只注意<代码>Cars。

代码的完整工作实例

如果你倾向于使用阵列名称,例如方括号,则执行ArrayAccess

class Cars implements IteratorAggregate, ArrayAccess
{
    // …

    public function offsetSet($offset, $value)
    {
        if($value instanceof Car) {
            $this->storage[$offset] = $value;
        } else {
            throw …
        }
    }
}

http://codepad.org/geoc4TNW”rel=“nofollow”> 代码上的全部工作实例





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签