PHP version >=5
you want to access to object as array so you need to implements ArrayAccess
<?php namespace App\Services;
use ArrayAccess;
class Obj implements ArrayAccess
{
public $container = [
"amazone" => 'TrueMe on amazone',
"youtube" => 'TrueMe on youtube',
"tiktok" => 'TrueMe on tiktok',
"lazada" => 'TrueMe on lazada',
];
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;
}
}
Route::prefix('array-access')->group(function () {
Route::get('/', 'ArrayAccessController@index');
});
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Services\Obj;
class ArrayAccessController extends Controller
{
public function index(Obj $obj)
{
var_dump(3333333,
$obj,
'+ isset($obj["amazone"]) : ' . isset($obj["amazone"]),
'+ Value of $obj["amazone"] : ' . $obj['amazone'],
);
unset($obj["amazone"]);
$obj["amazone"] = "This is new value for amazone Trueme";
$obj[] = 'Append TrueMe 1';
$obj[] = 'Append TrueMe 2';
$obj[] = 'Append TrueMe 3';
dd(
'+ unset($obj["amazone"]) :',
'+ and recheck isset($obj["amazone"]) : '
. isset($obj["amazone"]),
'+ Assign new value for $obj["amazone"] : '
. $obj['amazone'],
$obj
);
}
}
D:\Projects\laravel70\app\Http\Controllers\ArrayAccessController.php:15:int 3333333
D:\Projects\laravel70\app\Http\Controllers\ArrayAccessController.php:15:
object(App\Services\Obj)[329]
public 'container' =>
array (size=4)
'amazone' => string 'TrueMe on amazone' (length=17)
'youtube' => string 'TrueMe on youtube' (length=17)
'tiktok' => string 'TrueMe on tiktok' (length=16)
'lazada' => string 'TrueMe on lazada' (length=16)
D:\Projects\laravel70\app\Http\Controllers\ArrayAccessController.php:15:string '+ isset($obj["amazone"]) : 1' (length=28)
D:\Projects\laravel70\app\Http\Controllers\ArrayAccessController.php:15:string '+ Value of $obj["amazone"] : TrueMe on amazone' (length=46)
"+ unset($obj["amazone"]) :"
"+ and recheck isset($obj["amazone"]) : 1"
"+ Assign new value for $obj["amazone"] : This is new value for amazone Trueme"
App\Services\Obj {#329 ▼
+container: array:7 [▼
"youtube" => "TrueMe on youtube"
"tiktok" => "TrueMe on tiktok"
"lazada" => "TrueMe on lazada"
"amazone" => "This is new value for amazone Trueme"
0 => "Append TrueMe 1"
1 => "Append TrueMe 2"
2 => "Append TrueMe 3"
]
}