Get image url from model good practice? |
i would never ever attach a class which represents a data object together with a model because there are cases where you just need the object
so this is in my opinion a wrong approach thats because i wrote the autoloader as a hook because of its clean technique. You dont have to be worried about another hook who eventually needs an object because it gets as a pre controller hook loaded and you will see if your system grows and grows this approach helps you a lot @dubefx i know the customer result object function and it gets used if i dont need to initialize my custom objects or attach any other object to but in most cases i need to iterate over (but of course your approach is right too)
Ok so I used your idea and merged to create custom objects on another projects, here is the code and please tell me if is ok:
hooks.php PHP Code: $hook['pre_system'][] = array( AppAutoLoadObjects.php PHP Code: class AppAutoLoadObjects Proprietati_model.php PHP Code: function select_by_limit($start, $limit) { and Proprietati_Object.php PHP Code: class Proprietati_Object Is this ok?
it was never intended to (ab)use Data Objects to load Views
you should pass your prepared data array from a model to a controller and in your controller load the view - as described by many many users here if you want to follow my approach it is a bad practice to load views in a data Object like you do in your Proprietati_Object The purpose of a data object is to clean up your models and let the objects do all the work which are related to the Objects Data a simple example would be: if your database contains 2 columns discount and price and you want the calculated price - than your object can do the work PHP Code: class Proprietati_Object and i don't quite get your adaption of the autoloader function PHP Code: public function autoloadCoreObjects($class) this does the same as my posted function except the fact that you use for some weird reason explode to split the name in 2 partials.
This should fix it cuz I return the view as data:
PHP Code: public function get_block_caracteristics(){ Yes you told me that to load views in controller but I need different view for each item from the object, and in this case I need to make a foreach to the object like this: PHP Code: $object = $this->model->get_from_db(); Then my controller will get a mess. This view have only few lines of html from the entire page I made that explode because $class returned Proprietati_model. The Proprietati model file was proprietati_model.php with class Proprietati_model. And also how can I pass a param on the constructor's class?
the autoloader only loads files from the application/objects directory
if the proprietati_model was inside of this directory than remove it and copy it to the application/models directory, because a model should not be there
(11-12-2015, 03:41 AM)sintakonte Wrote: the autoloader only loads files from the application/objects directory You did not understand, public function autoloadCoreObjects($class) where $class is the name of the model yes? Well my model name was: Proprietati_model because in my models folder this is how I use to name my models: Properties_model.php with class Properties_model Products_model.php with class Products_model Maybe your models was Properties.php with class Properties Products.php with class Products and you did not need that explode for underscore.
that doesnt matter the autoloader only loads classes which are in application/objects directory as i mentioned earlier - and the code should indicate it
In case you did not know it the spl_array methods have built in foreach
Research them. What did you Try? What did you Get? What did you Expect?
Joined CodeIgniter Community 2009. ( Skype: insitfx )
you mean because foreach creates everytime a copy of the array you pass it to, you would consider an arrayiterator or something like that ?
|
Welcome Guest, Not a member yet? Register Sign In |