Type hinting - specify an array of objects

0 votes

Is there a way to specify the argument type as an array? Assume if I have a class named foo:

class Foo {}

And I have a function that accepts that class type as an argument:

function getFoo(Foo $f) {}

I am getting an error when I pass in the array:

Catchable fatal error: Argument 1 passed to getFoo() must be an instance of Foo, array given

Is there a way to solve this?

May 29, 2022 in PHP by Kichu
• 19,040 points
985 views

No answer to this question. Be the first to respond.

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
0 votes

To know that you are with the  with "Array of Foo" and you want to ensure methods receive "Array of Foo", then use this:

class ArrayOfFoo extends \ArrayObject {
    public function offsetSet($key, $val) {
        if ($val instanceof Foo) {
            return parent::offsetSet($key, $val);
        }
        throw new \InvalidArgumentException('Value must be a Foo');
    }
}

Then:

function workWithFoo(ArrayOfFoo $foos) {
    foreach ($foos as $foo) {
        // etc.
    }
}

$foos = new ArrayOfFoos();
$foos[] = new Foo();
workWithFoo($foos);

You have to define a new "type" of "array of foo", then pass that "type" around using type hinting protection.

I hope this helps you.

answered May 30, 2022 by narikkadan
• 86,360 points

edited Mar 5, 2025

Related Questions In PHP

0 votes
0 answers

Filter array by its keys using an array of allowed keys

The callback function in array_filter() only passes in the ...READ MORE

Jun 20, 2022 in PHP by narikkadan
• 86,360 points
801 views
0 votes
0 answers

How to sort an array of associative arrays by value of a given key in PHP?

Given this array: $inventory = array( ...READ MORE

Jul 24, 2022 in PHP by Kithuzzz
• 38,000 points
1,112 views
0 votes
1 answer

How to pass an array within a query string?

Hello, Submitting multi-value form fields, i.e. submitting arrays ...READ MORE

answered Apr 8, 2020 in PHP by Niroj
• 82,800 points
13,390 views
0 votes
1 answer

How to resolve “must be an instance of string, string given” prior to PHP 7?

Hello, Prior to PHP 7 type hinting can only be ...READ MORE

answered Apr 20, 2020 in PHP by I Navin
• 220 points
6,028 views
0 votes
1 answer

How can I remove a specific item from an array?

Hello @kartik, Find the index of the array element you ...READ MORE

answered Aug 28, 2020 in PHP by Niroj
• 82,800 points
1,498 views
0 votes
1 answer

How to store values from foreach loop into an array?

sfsf gf fgfgf fhfh READ MORE

answered Nov 10, 2023 in PHP by anonymous

edited Mar 5, 2025 31,370 views
0 votes
1 answer

How to check if array is multidimensional or not?

Since the 'second dimension' could be just ...READ MORE

answered Nov 5, 2018 in Others by DataKing99
• 8,250 points
7,202 views
0 votes
1 answer

How to store input value into array then localstorage?

Hello @ abhittac, You have create the array everytime the ...READ MORE

answered Jul 24, 2020 in Java-Script by Niroj
• 82,800 points
9,963 views
0 votes
1 answer

Convert a PHP object to an associative array

Start with simply typecasting the line:- $array = ...READ MORE

answered Feb 23, 2022 in PHP by Aditya
• 7,680 points
2,936 views
0 votes
0 answers

php var_dump() vs print_r()

What is the difference between var_dump() and print_r() in terms of ...READ MORE

May 28, 2022 in PHP by Kichu
• 19,040 points
1,306 views
webinar REGISTER FOR FREE WEBINAR X
REGISTER NOW
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP