Jump to content

Problem creating objects dynamically


JarlG
 Share

Recommended Posts

Hi, I'm trying to create objects on the run, but it I have run int a barrier that is really annoying:
The code is:

$tableName = $this->_stripNamespaceFromClassName(get_class($this));
$modelName = $tableName;
$modelName[strlen($modelName) - 1] = "";
$demoModelName = "Product";
echo "-".$tableName."-\n";
echo "-".$modelName."-\n";
echo "-".$demoModelName."-\n";
$demoFullyQualifiedModelName = "\\StreamComposer\\Models\\$demoModelName";
$fullyQualifiedModelName = "\\StreamComposer\\Models\\$modelName";
echo "So far so good\n";
new $demoFullyQualifiedModelName();
echo "Demo loaded ok\n";
new $fullyQualifiedModelName();
echo "Fully loaded ok\n";

 
The result is (Echo string is bold):
-Products-
-Product-
-Product-
So far so good
Demo loaded ok
PHP Fatal error:  Uncaught Error: Class '\StreamComposer\Models\Product' not found in /var/www/streamcomposer.com/api/Models/Repositories/Repository.php:61
Stack trace:
#0 /var/www/streamcomposer.com/api/Command/setupPayment.php(27): StreamComposer\Models\Repositories\Repository->loadAll()
#1 /var/www/streamcomposer.com/api/Command/setupPayment.php(32): StreamComposer\Command\SetupPayment->createPlans()
#2 {main}
  thrown in /var/www/streamcomposer.com/api/Models/Repositories/Repository.php on line 61
 
As you see the $demo.. object loads fine, but the $fully.. does not :-(
 
Thanks in advance

Edited by JarlG
Link to comment
Share on other sites

$modelName[strlen($modelName) - 1] = "";
Don't do that. You cannot use [] to remove characters - only replace. What the code above actually does is replace with a \0.

 

I don't know what character you're trying to remove but I suggest looking at rtrim.

 

[edit] The character is 's'. Which should be obvious given the code and output above. Eh.

Edited by requinix
Link to comment
Share on other sites

Thanks. Yes I just found out that that was the case :-)

I used: $modelName = preg_replace('/.$/', '', $modelName);

instead which also worked.

 

So thanks, and now I got an explanation for why and not just a solution. Much appreciated!

Link to comment
Share on other sites

This thread is more than a year old.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.