[Phpwm] PHP eclipse problem

Elliot Smith elliot at townx.org
Wed Apr 26 09:54:21 BST 2006


Pete,

A few comments:

1. Instead of having two separate, almost identical sets of code for 
setting up the include path, it might be better to use the DIRECTORY 
SEPARATOR and PATH_SEPARATOR magic PHP constants, like this:

$_PATHS["includes"]      = $_PATHS["base"] . "includes" . 
DIRECTORY_SEPARATOR;
$_PATHS["templates"]    = $_PATHS["base"] . "templates" . 
DIRECTORY_SEPARATOR;

...

ini_set("include_path", "." . PATH_SEPARATOR . "$_PATHS[includes]" . 
PATH_SEPARATOR . "$_PATHS[templates]" ...

...

(truncated for brevity). That way you can set the paths for any OS with 
the same code.

2. I think it's a matter of taste whether you prefer:

include_once("../includes/functions.php");

OR

include_once("functions.php");

Personally, I prefer the former, as it is more explicit about where the 
code you're including resides. It's not so obvious in the latter, and 
I'd prefer clarity over brevity any day. Plus there's less chance of 
namespace clashes (e.g. if there is a functions.php file in more than 
one place on the include path, PHP might include the wrong one).

My personal tendency would be to create a single init style script, 
which pulls in all the libraries I'm going to need, then just include 
the init script where I need the libraries. I know this may pull in more 
code than I actually need for some scripts; but I think the extra time 
spent doing this is probably little more than the extra time PHP would 
spend resolving paths where they are not explicit (as is the case if you 
append lots of extra paths to the include_path ini variable). 
Interesting one, though.

3. Filtering problem messages in Eclipse: get the Problems view up; 
click the little button with arrows on it (top right); in the pop-up 
window, at the bottom, there's an option to filter problems shown, based 
on text within the problem (exclude or include).

Elliot





pete graham wrote:

> Elliot,
>
> Here is a better explanation of how I structure my code. In the 
> eclipse project I wanted to set projectname as the root directory.
>
> Now projectname/htdocs is the webroot. Every single file in htdocs 
> includes a file called config.inc.php. The file includes this code:
>
> if(preg_match("/WINDOWS/i", $_SERVER["SystemRoot"]))
> {
>     // THIS IS A WINDOWS MACHINE
>
>     ## Include paths
>     $_PATHS["base"]            = dirname(dirname(__FILE__)) . "\\";
>     $_PATHS["includes"]        = $_PATHS["base"] . "includes\\";
>     $_PATHS["templates"]    = $_PATHS["base"] . "templates\\";
>     $_PATHS["pear"]            = $_PATHS["base"] . "pear\\";
>     $_PATHS["logs"]            = $_PATHS["base"] . "logs\\";
>     $_PATHS["sidebar"]        = $_PATHS["base"] . "sidebar\\";
>
>     /**
>     * Set include path
>     */
>     ini_set("include_path",
>             
> ".;$_PATHS[includes];$_PATHS[templates];$_PATHS[pear];$_PATHS[sidebar]");
>
> }else{
>     // NOT A WINDOWS MACHINE (Linux, Mac, FreeBSD)
>
>     ## Include paths
>     $_PATHS["base"]            = dirname(dirname(__FILE__)) . "/";
>     $_PATHS["includes"]        = $_PATHS["base"] . "includes/";
>     $_PATHS["templates"]    = $_PATHS["base"] . "templates/";
>     $_PATHS["pear"]            = $_PATHS["base"] . "pear/";
>     $_PATHS["logs"]            = $_PATHS["base"] . "logs/";
>     $_PATHS["sidebar"]        = $_PATHS["base"] . "sidebar/";
>
>     /**
>     * Set include path
>     */
>     ini_set("include_path",
>             
> ".:$_PATHS[includes]:$_PATHS[templates]:$_PATHS[pear]:$_PATHS[logs]:$_PATHS[sidebar]");
> }
>
> this lovely bit of code means that I don't have to type:
>
> include_once("../includes/functions.php");
>
> I can just do this instead:
>
> include_once("functions.php");
>
> Unfortunately eclipse does not seem to enjoy this style of structuring 
> which is a shame because I find it highly effective.
>
> I shall have to look into your suggestion of using a problems filter, 
> that sounds promising.
>
> Pete
>
>
>
> On 4/26/06, *Elliot Smith* < elliot at townx.org 
> <mailto:elliot at townx.org>> wrote:
>
>     Dear Pete,
>
>     Although I don't organise my code like this, from what I know of
>     PHPEclipse, it should resolve paths correctly if you did your includes
>     something like this (presuming you set projectname as the root
>     directory
>     when creating your Eclipse project):
>
>     require_once('../includes/file.php');
>
>     I assume you're doing something like this, rather than using absolute
>     paths? Another approach may be to just exclude those messages from the
>     problems list using a filter.
>
>     Elliot
>
>
>     pete graham wrote:
>
>     > I have been experimenting with PHPeclipse yesterday and today.
>     Here is
>     > a fairly big problem that I have run into that has stopped me from
>     > using it.
>     >
>     > Eclipse generates a lot of warnings of type: "Include filename
>     > 'blah.php' doesn't exist in project."
>     >
>     > I tried to explicitly set the "Include Path" for the project in
>     > "Project->Properties->PHP Project Settings->Include Paths"
>     (although
>     > this shouldn't be necessary because these paths are dynamically
>     set by
>     > a set_include_path() call in the script). This hasn't solved the
>     problem.
>     >
>     > All my projects have this structure
>     >
>     > projectname/htdocs/        # actual website root
>     > projectname/includes/      # mostly php classes and files
>     > with programming logic
>     > projectname/templates/   # html files, headers footers, etc
>     >
>     > I find this an effective way of organising the files. It seems the
>     > only way to get PHPeclipse to not generate the errors is to
>     place all
>     > code in the website root which I really don't want to do. Can
>     anyone
>     > help me on this problem?
>     >
>     > I saw on a forum post that "working sets" may be able to solve my
>     > problem, but I'm quite unclear on what these are.
>     >
>     > Pete
>     >
>     >------------------------------------------------------------------------
>
>     >
>     >_______________________________________________
>     >Phpwm mailing list
>     >Phpwm at mailman.lug.org.uk <mailto:Phpwm at mailman.lug.org.uk>
>     > https://mailman.lug.org.uk/mailman/listinfo/phpwm
>     >
>     >
>
>
>     _______________________________________________
>     Phpwm mailing list
>     Phpwm at mailman.lug.org.uk <mailto:Phpwm at mailman.lug.org.uk>
>     https://mailman.lug.org.uk/mailman/listinfo/phpwm
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Phpwm mailing list
>Phpwm at mailman.lug.org.uk
>https://mailman.lug.org.uk/mailman/listinfo/phpwm
>  
>




More information about the Phpwm mailing list