Re: [PHP-GTK] error in constructor
[email protected] (Elizabeth M Smith) Mon, 31 Aug 2009 13:50:13 -0400
| Newsgroups | php.gtk.general |
|---|---|
| Message-ID | <[email protected]> |
Benjamin FOURTICQ wrote:
> I imagine the constructor is called twice, because when you call $toto =
> new ProjectList()
> ProjectList::__construct() is called and so GtkTreeview::__construct(),
> then ProjectList::ProjectList() because it exists.
> In my opinion, if you just need to set the model use set_model() instead
> of calling the prent constructor.
>
> Hope this helps,
> Benjamin.
>
> Le 31/08/2009 19:07, Der Starchaser a écrit :
>>
>> I want to program a class ProjectList, which is derived from class
>> GtkTreeView. The following code snippet results in an assertion error. Is
>> anybody able to explain me the error ?
>>
>>
>> class ProjectList extends GtkTreeView
>> {
>>
>> protected $store;
>>
>> /***********************************************************/
>> /* Constructor Method
>> /***********************************************************/
>> function ProjectList()
>> {
>>
>> $this->store = new GtkListStore(
>> GObject::TYPE_STRING, GObject::TYPE_STRING
>> );
>>
>> parent::__construct( $this->store );
>>
>> $col = 0;
>> $column = $this->get_column(0);
>> assert( $column ); //<- this line throws an
>> assertion error
>> $cell_renderer = new GtkCellRendererPixbuf();
>> $column->pack_start($cell_renderer, false);
>>
>> $column->set_cell_data_func(
>> $cell_renderer,
>> "prjlist_format_pixbuf",
>> $this->Pixmap
>> );
>>
>> }
>>
>> } // of class
>>
>>
>
ugh - if you want to override the constructor that's fine - do it using
public function __construct() {}
PHP 5 uses unified constructors - the "use the same function as the
class name" support is a holdover for BC, please please don't use it in
new code.... as you see it has some seriously odd side effects
see the manual http://php.net/oop5.decon
Thanks,
Elizabeth