0

I am working on a project that gets emails from a Gmail inbox and parses the subject line to insert the data into a table on a wordpress site. I get the error below when I run the code:

[proxy_fcgi:error] [pid 14749:tid 139648739124992] [client 172.70.131.199:47722] AH01071: Got error 'PHP message: PHP Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) in /bitnami/wordpress/wp-content/themes/hello-child/vendor/psr/cache/src/CacheItemInterface.php on line 104'

The code file is reproduced below, line 104 is the last line before the } at the end of the file.

<?php

namespace Psr\Cache;

/**
 * CacheItemInterface defines an interface for interacting with objects inside a cache.
 *
 * Each Item object MUST be associated with a specific key, which can be set
 * according to the implementing system and is typically passed by the
 * Cache\CacheItemPoolInterface object.
 *
 * The Cache\CacheItemInterface object encapsulates the storage and retrieval of
 * cache items. Each Cache\CacheItemInterface is generated by a
 * Cache\CacheItemPoolInterface object, which is responsible for any required
 * setup as well as associating the object with a unique Key.
 * Cache\CacheItemInterface objects MUST be able to store and retrieve any type
 * of PHP value defined in the Data section of the specification.
 *
 * Calling Libraries MUST NOT instantiate Item objects themselves. They may only
 * be requested from a Pool object via the getItem() method.  Calling Libraries
 * SHOULD NOT assume that an Item created by one Implementing Library is
 * compatible with a Pool from another Implementing Library.
 */
interface CacheItemInterface
{
    /**
     * Returns the key for the current cache item.
     *
     * The key is loaded by the Implementing Library, but should be available to
     * the higher level callers when needed.
     *
     * @return string
     *   The key string for this cache item.
     */
    public function getKey();

    /**
     * Retrieves the value of the item from the cache associated with this object's key.
     *
     * The value returned must be identical to the value originally stored by set().
     *
     * If isHit() returns false, this method MUST return null. Note that null
     * is a legitimate cached value, so the isHit() method SHOULD be used to
     * differentiate between "null value was found" and "no value was found."
     *
     * @return mixed
     *   The value corresponding to this cache item's key, or null if not found.
     */
    public function get();

    /**
     * Confirms if the cache item lookup resulted in a cache hit.
     *
     * Note: This method MUST NOT have a race condition between calling isHit()
     * and calling get().
     *
     * @return bool
     *   True if the request resulted in a cache hit. False otherwise.
     */
    public function isHit();

    /**
     * Sets the value represented by this cache item.
     *
     * The $value argument may be any item that can be serialized by PHP,
     * although the method of serialization is left up to the Implementing
     * Library.
     *
     * @param mixed $value
     *   The serializable value to be stored.
     *
     * @return static
     *   The invoked object.
     */
    public function set(mixed $value);

    /**
     * Sets the expiration time for this cache item.
     *
     * @param ?\DateTimeInterface $expiration
     *   The point in time after which the item MUST be considered expired.
     *   If null is passed explicitly, a default value MAY be used. If none is set,
     *   the value should be stored permanently or for as long as the
     *   implementation allows.
     *
     * @return static
     *   The called object.
     */
    public function expiresAt(?\DateTimeInterface $expiration);

    /**
     * Sets the expiration time for this cache item.
     *
     * @param int|\DateInterval|null $time
     *   The period of time from the present after which the item MUST be considered
     *   expired. An integer parameter is understood to be the time in seconds until
     *   expiration. If null is passed explicitly, a default value MAY be used.
     *   If none is set, the value should be stored permanently or for as long as the
     *   implementation allows.
     *
     * @return static
     *   The called object.
     */
    public function expiresAfter(int|\DateInterval|null $time);
}
Linda Lawton - DaImTo
  • 106,405
  • 32
  • 180
  • 449
  • Which version of PHP are you using? You can use [mixed type declarations](https://www.php.net/manual/en/language.types.declarations.php#language.types.declarations.mixed) as of PHP 8.0.0. – KIKO Software Mar 18 '22 at 18:22
  • 1
    you are using a PHP version lower than 8 and the library is built for PHP 8+ – Cornel Raiu Mar 18 '22 at 18:24
  • 1
    Issue is caused by [argument Union Types](https://www.php.net/manual/en/language.types.declarations.php#language.types.declarations.composite.union) syntax `int|\DateInterval|null $time` which became available in PHP 8.0+. You will need to upgrade to PHP 8.0+ or downgrade the library you are using to one that requires `psr/cache: ^1.0` – Will B. Mar 18 '22 at 18:35

0 Answers0