Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: "J.O. Aho" Newsgroups: comp.lang.php Subject: Re: ArrayObject vs array Date: Sat, 24 Jul 2021 12:10:02 +0200 Lines: 104 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net EyQRujA+IXqDSpXT2fqPIgaZ/msm6326HPKHzow1eBaC2XDL9A Cancel-Lock: sha1:nOz0YArXQKcF0QVobiM1rjh0BTg= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 In-Reply-To: Content-Language: en-US-large Xref: csiph.com comp.lang.php:18742 On 24/07/2021 08.26, alex wrote: > Il 23/07/21 19:39, Jerry Stuckle ha scritto: >> On 7/23/2021 5:16 AM, alex wrote: >>> class C implements ArrayAccess, Countable, IteratorAggregate, >>> Serializable { >>> >>>      private $container = ['a', 'b']; >>> >>>      public function offsetSet($offset, $value) { >>>          if (is_null($offset)) { >>>              $this->container[] = $value; >>>          } else { >>>              $this->container[$offset] = $value; >>>          } >>>      } >>> >>>      public function offsetExists($offset) { >>>          return isset($this->container[$offset]); >>>      } >>> >>>      public function offsetUnset($offset) { >>>          unset($this->container[$offset]); >>>      } >>> >>>      public function offsetGet($offset) { >>>          return isset($this->container[$offset]) ? >>> $this->container[$offset] : null; >>>      } >>> >>>      public function count() { >>>          return count($this->container); >>>      } >>> >>>      public function getIterator() { >>>          return new ArrayIterator($this->container); >>>      } >>> >>>      public function serialize() { >>>          return serialize($this->container); >>>      } >>> >>>      public function unserialize($data) { >>>          $this->container = unserialize($data); >>>      } >>> >>>      public function getData() { >>>          return $this->container; >>>      } >>> >>> } >>> >>> print_r( >>>          (array) new ArrayObject(['a', 'b']) >>> ); >>> print_r( >>>          (array) new C >>> ); >>> >>> Output: >>> >>> Array >>> ( >>>      [0] => a >>>      [1] => b >>> ) >>> Array >>> ( >>>      [Ccontainer] => Array >>>          ( >>>              [0] => a >>>              [1] => b >>>          ) >>> >>> ) >>> >>> Because the result is not the same? >> >> An object is not the same as a basic type.  A basic type holds one or >> more values.  An object can also have methods to operate on those >> values.  The two are not compatible. >> > > Could you tell me what these methods are? The object can be of any type, so the whole depends on the class definition. for example: class myclass { public $array = Array(); public function getFirst() { if(sizeof($this->array) == 0) { return null; } return $this->array[1]; } } this has the method getFirst. -- //Aho