'Uncaught Error: Object of class CompanyName could not be converted to string
I have two classes in PHP.
- RequestorId.php
<?php
class RequestorId
{
/**
* @var CompanyName $CompanyName
* @access public
*/
public $CompanyName = null;
/**
* @var string $ID
* @access public
*/
public $ID = null;
/**
* @var string $ID_Context
* @access public
*/
public $ID_Context = null;
/**
* @param CompanyName $CompanyName
* @param string $ID
* @param string $ID_Context
* @access public
* **/
public function __construct($CompanyName, $ID, $ID_Context)
{
$this->$CompanyName = $CompanyName;
$this->$ID = $ID;
$this->$ID_Context = $ID_Context;
}
}
- CompanyName.php
<?php
class CompanyName
{
/**
* @var string $Code
* @access public
*/
public $Code = null;
/**
* @param string $Code
* @access public
*/
public function __construct($Code)
{
$this->Code = $Code;
}
}
I received this error "Uncaught Error: Object of class CompanyName could not be converted to string", when I use them like this:
$companyname = new CompanyName('SampleName');
$requestorid = new RequestorId($companyname, '10', 'sss'); <<-- error happen here
Can anyone help me and point me in the right direction, please?
Solution 1:[1]
It's a typo in your RequestorId constructor class. Rewrite it like this:
public function __construct($CompanyName, $ID, $ID_Context)
{
$this->CompanyName = $CompanyName;
$this->ID = $ID;
$this->ID_Context = $ID_Context;
}
You must remove $ sign from the beginning of properties when accessing them.
When you use $ in front of CompanyName it means that you want to have a dynamic property name based on what is the value of $CompanyName provided in constructor. Then php tries to convert your class to string but it can't and you get the error.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Mohammad Mirsafaei |
