There is no 'red' line error indicators, no predictive variable or function suggestions and no colour differentiation between variable names and strings. It makes sense from the IDE's perspective, after all, we are editing a "string" that iLance takes to evaluate (eval(string)) when the corresponding 'api' is called.
($apihook = $ilance->api('[APIHOOKSTRING]')) ? eval($apihook): false;
Also, when you have several different plugins firing from the same apihook and one of the xml plugin files has an error you get an error message that refers to the file that holds the apihook, i.e. main.php and the line number that the error happens on in the evaluated code, but not the actual file name where the error takes place. SO that means you need to visually inspect each of the files you have with that event starting with the most likely culprits first (i.e. the ones you have open to learn how something is done in iLance). I can tell you from experience, this can be very frustrating.
The lack of these features has been an annoying reality for some time. Recently I had the opportunity to start from scratch on a new project and so, I decided to use a pretty straight forward file include technique and I have enjoyed the results.
The first thing I did was decide what the directory structure should look like, and more specifically, where my php plugin code should go. Then define that as a Global Constant:
define("MY_PLUGIN_CODE_XMLPHP", DIR_FUNCTIONS . "custom/myapp/xmlphp/");
After I have done this, I use the exact same (almost) pattern for each of my plugin xml plugs, for example:
This way I get to keep all my plugin specific code in one directory and edit the PHP in that file with all its error highlighted and color filled splendor.
Doing it this way also has the nice side effect of orgainizing my files alphabetically in the directory. When including all my php in the plugin xml file meant that as the file grew it would become a little harder to find things.
In any case, I am not suggesting that this is best way, but it has proven to be a truly beneficial way for me to organize and fire my plugin specific code.