summaryrefslogtreecommitdiff
path: root/src/object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object.cpp')
-rw-r--r--src/object.cpp79
1 files changed, 0 insertions, 79 deletions
diff --git a/src/object.cpp b/src/object.cpp
deleted file mode 100644
index d7fc158..0000000
--- a/src/object.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Object.cpp
- *
- * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
- * @copyright 2014 Copernica BV
- */
-#include "includes.h"
-
-/**
- * Set up namespace
- */
-namespace Php {
-
-/**
- * Constructor to create a new instance of a builtin class
- *
- * @param name Name of the class to instantiate
- * @param base Implementation of the class
- */
-Object::Object(const char *name, Base *base)
-{
- // does the object already have a handle?
- if (base->implementation())
- {
- // the object is already instantiated, we can assign it the this object
- operator=(Value(base));
- }
- else
- {
- // we need the tsrm_ls variable
- TSRMLS_FETCH();
-
- // this is a brand new object that should be allocated, the C++ instance
- // is already there (created by the extension) but it is not yet stored
- // in PHP, find out the classname first
- auto *entry = zend_fetch_class(name, strlen(name), 0 TSRMLS_CC);
- if (!entry) throw Php::Exception(std::string("Unknown class name ") + name);
-
- // construct an implementation (this will also set the implementation
- // member in the base object)
- new ObjectImpl(entry, base TSRMLS_CC);
-
- // now we can store it
- operator=(Value(base));
- }
-}
-
-/**
- * Internal method to instantiate an object
- * @param name
- */
-void Object::instantiate(const char *name)
-{
- // we need the tsrm_ls variable
- TSRMLS_FETCH();
-
- // convert the name into a class_entry
- auto *entry = zend_fetch_class(name, strlen(name), 0 TSRMLS_CC);
- if (!entry) throw Php::Exception(std::string("Unknown class name ") + name);
-
- // initiate the zval (which was already allocated in the base constructor)
- object_init_ex(_val, entry);
-
- // @todo should we call methods like allocating hashtables, copying and
- // initializing properties, et cetera????? In all example you always
- // see such complicated and next-to-impossible-to-understand
- // sequences of functions being called, but this object_init_ex
- // also seems to work...
-
- // @todo is this a memory leak? the base class first initializes a stdClass,
- // and then we overwrite it with a specific class
-
-}
-
-/**
- * End namespace
- */
-}
-