« Embeder - a free PHP to EXE solution | Home | Changing the application name of a GtkAboutDialog in PHP-GTK2 »
Stopping the “PHP Fatal error: Internal object missing in” error in PHP-GTK2
By admin | August 16, 2008
In PHP-GTK2, if you build your own class of an existing PHP-GTK2 class, you may encounter one of the following errors:
- “PHP Fatal error: Internal object missing in YourclassName wrapper in /path/to/your/script on line *”
- “Fatal error: Internal object missing in YourclassName wrapper in /path/to/your/script on line *”
This is somehow (not documented) caused by not calling parent::__construct(), the parent constructor. For example, try to run the following snippet:
<?phpif (!class_exists(‘gtk’)) {
die(“ERROR: No PHP-GTK2 Module.\n”);
}
class Myclassw extends GtkWindow {
protected $label;
function __construct() {
$label = new GtkLabel(“Hello World - will fail”);
$this->add($label);
$this->show();
$this->show_all();
Gtk::main();
}
}
$a = new Myclassw();
?>
You should receive the following errors: (path may be different)
- PHP Fatal error: Internal object missing in Myclassw wrapper in /usr/dev/php5/gtk2/bug.php on line 14
- Fatal error: Internal object missing in Myclassw wrapper in /usr/dev/php5/gtk2/bug.php on line 14
Now, try this snippet:
<?php
if (!class_exists(‘gtk’)) {
die(“ERROR: No PHP-GTK2 Module.\n”);
}
class Myclassw extends GtkWindow {
protected $label;
function __construct() {
parent::__construct(); // New line inserted here
$label = new GtkLabel(“Hello World - will work!”);
$this->add($label);
$this->show();
$this->show_all();
Gtk::main();
}
}
$a = new Myclassw();
?>
Now this time, it should work as expected. If you encounter “ERROR: No PHP-GTK2 module.”, this means that you are either running it in your web server or ran it without php-gtk2.(so/dll) in your php.ini.
All tests were ran on Ubuntu Linux 8.04, PHP 5.2.4-2ubuntu5.3 and Linux kernel version 2.6.24-19-generic. If this article helped you solve the problem, please help us spread the word or please leave a comment. Don’t forget to subscribe to Compdigitec Labs for more interesting articles!
