Objects

Object Initialization

To create a new object, use the new statement to instantiate a class:

<?php
class foo
{
    function 
do_foo()
    {
        echo 
"Doing foo."
    }
}

$bar = new foo;
$bar->do_foo();
?>

For a full discussion, see the Classes and Objects chapter.

Converting to object

If an object is converted to an object, it is not modified. If a value of any other type is converted to an object, a new instance of the stdClass built-in class is created. If the value was NULL, the new instance will be empty. Arrays convert to an object with properties named by keys, and corresponding values. For any other value, a member variable named scalar will contain the value.

<?php
$obj 
= (object) 'ciao';
echo 
$obj->scalar;  // outputs 'ciao'
?>

Коментарии

Автор:
In response to harmor: if an array contains another array as a value, you can recursively convert all arrays with:

<?php
function arrayToObject$array ){
  foreach( 
$array as $key => $value ){
    if( 
is_array$value ) ) $array$key ] = arrayToObject$value );
  }
  return (object) 
$array;
}
?>
2008-08-21 09:54:49
http://php5.kiev.ua/manual/ru/language.types.object.html
You can create [recursive] objects with something like:
<?php
  $literalObjectDeclared 
= (object) array(
     
'foo' => (object) array(
         
'bar' => 'baz',
         
'pax' => 'vax'
     
),
     
'moo' => 'ui'
   
);
print 
$literalObjectDeclared->foo->bar// outputs "baz"!
?>
2009-12-18 11:56:02
http://php5.kiev.ua/manual/ru/language.types.object.html
By far the easiest and correct way to instantiate an empty generic php object that you can then modify for whatever purpose you choose:

<?php $genericObject = new stdClass(); ?>

I had the most difficult time finding this, hopefully it will help someone else!
2012-01-04 15:15:36
http://php5.kiev.ua/manual/ru/language.types.object.html
Do you remember some JavaScript implementations?

// var timestamp = (new Date).getTime();

Now it's possible with PHP 5.4.*;

<?php
class Foo
{
    public 
$a "I'm a!";
    public 
$b "I'm b!";
    public 
$c;
   
    public function 
getB() {
        return 
$this->b;
    }
   
    public function 
setC($c) {
       
$this->$c;
        return 
$this;
    }
   
    public function 
getC() {
        return 
$this->c;
    }
}

print (new 
Foo)->a;      // I'm a!
print (new Foo)->getB(); // I'm b!
?>

or

<?php
// $_GET["c"] = "I'm c!";
print (new Foo)
       ->
setC($_GET["c"])
       ->
getC(); // I'm c!
?>
2012-03-02 02:41:01
http://php5.kiev.ua/manual/ru/language.types.object.html
Автор:
Here a new updated version of 'stdObject' class. It's very useful when extends to controller on MVC design pattern, user can create it's own class.

Hope it help you.

 <?php
class stdObject {
    public function 
__construct(array $arguments = array()) {
        if (!empty(
$arguments)) {
            foreach (
$arguments as $property => $argument) {
               
$this->{$property} = $argument;
            }
        }
    }

    public function 
__call($method$arguments) {
       
$arguments array_merge(array("stdObject" => $this), $arguments); // Note: method argument 0 will always referred to the main class ($this).
       
if (isset($this->{$method}) && is_callable($this->{$method})) {
            return 
call_user_func_array($this->{$method}, $arguments);
        } else {
            throw new 
Exception("Fatal error: Call to undefined method stdObject::{$method}()");
        }
    }
}

// Usage.

$obj = new stdObject();
$obj->name "Nick";
$obj->surname "Doe";
$obj->age 20;
$obj->adresse null;

$obj->getInfo = function($stdObject) { // $stdObject referred to this object (stdObject).
   
echo $stdObject->name " " $stdObject->surname " have " $stdObject->age " yrs old. And live in " $stdObject->adresse;
};

$func "setAge";
$obj->{$func} = function($stdObject$age) { // $age is the first parameter passed when calling this method.
   
$stdObject->age $age;
};

$obj->setAge(24); // Parameter value 24 is passing to the $age argument in method 'setAge()'.

// Create dynamic method. Here i'm generating getter and setter dynimically
// Beware: Method name are case sensitive.
foreach ($obj as $func_name => $value) {
    if (!
$value instanceOf Closure) {

       
$obj->{"set" ucfirst($func_name)} = function($stdObject$value) use ($func_name) {  // Note: you can also use keyword 'use' to bind parent variables.
           
$stdObject->{$func_name} = $value;
        };

       
$obj->{"get" ucfirst($func_name)} = function($stdObject) use ($func_name) {  // Note: you can also use keyword 'use' to bind parent variables.
           
return $stdObject->{$func_name};
        };

    }
}

$obj->setName("John");
$obj->setAdresse("Boston");

$obj->getInfo();
?>
2014-02-21 08:38:53
http://php5.kiev.ua/manual/ru/language.types.object.html
Автор:
As of PHP 5.4, we can create stdClass objects with some properties and values using the more beautiful form:

<?php
  $object 
= (object) [
   
'propertyOne' => 'foo',
   
'propertyTwo' => 42,
  ];
?>
2015-04-22 00:28:28
http://php5.kiev.ua/manual/ru/language.types.object.html
Автор:
In PHP 7 there are a few ways to create an empty object:

<?php
$obj1 
= new \stdClass// Instantiate stdClass object
$obj2 = new class{}; // Instantiate anonymous class
$obj3 = (object)[]; // Cast empty array to object

var_dump($obj1); // object(stdClass)#1 (0) {}
var_dump($obj2); // object(class@anonymous)#2 (0) {}
var_dump($obj3); // object(stdClass)#3 (0) {}
?>

$obj1 and $obj3 are the same type, but $obj1 !== $obj3. Also, all three will json_encode() to a simple JS object {}:

<?php
echo json_encode([
    new 
\stdClass,
    new class{},
    (object)[],
]);
?>

Outputs: [{},{},{}]
2016-01-19 00:36:45
http://php5.kiev.ua/manual/ru/language.types.object.html
<!--Example shows how to convert array to stdClass Object and how to access its value for display -->
<?php 
$num 
= array("Garha","sitamarhi","canada","patna"); //create an array
$obj = (object)$num//change array to stdClass object 

echo "<pre>";
print_r($obj); //stdClass Object created by casting of array 

$newobj = new stdClass();//create a new 
$newobj->name "India";
$newobj->work "Development";
$newobj->address="patna";

$new = (array)$newobj;//convert stdClass to array
echo "<pre>";
print_r($new); //print new object

##How deals with Associative Array

$test = [Details=>['name','roll number','college','mobile'],values=>['Naman Kumar','100790310868','Pune college','9988707202']];
$val json_decode(json_encode($test),false);//convert array into stdClass object

echo "<pre>";
print_r($val);

echo ((
is_array($val) == true ) == "array" "not an array" )."</br>"// check whether it is array or not
echo ((is_object($val) == true ) == "object" "not an object" );//check whether it is object or not 
?>
2016-03-11 12:27:38
http://php5.kiev.ua/manual/ru/language.types.object.html

    Поддержать сайт на родительском проекте КГБ