[Phpwm] PHP eclipse problem

pete graham petegraham1 at gmail.com
Wed Apr 26 10:14:32 BST 2006


Elliot,

Thanks for the help on the filter that is working nicely now.

In response to your code comment:

1. I am well aware that I could make that piece of code could be made more
efficient/elegant. It was originally written to just use on Linux servers, I
had to quickly change it when developing using XAMPP on my laptop one day.

2.  Personally I prefer setting up the include path and using:

include_once("functions.php");

I have being doing this for a while, if I remember correctly the reason I
started doing it was because if you include a page from an include page, the
2nd include is relative to the original page not the page including it.

I was finding this a bit irritating as I have actual pages at different
levels of depth in the webroot that call classes (in the folder includes)
that then include other functions (in includes), now with relative paths
this was breaking my system as the relative position of the functions file
changes. This was the solution I found. I'm not suggesting that everyone
should use it, it just works for me.

Your suggestion of a init style script, is interesting, I actually do a
similar thing to call helpful/useful functions these days, which would
actually solve the problem described above too ;-)

Your Namespaces comment is also valid, I use a naming convention so
everything in the includes folder has the extensions .inc.php or .class.php.
Everthing in htdocs only has only the .php extension.

Pete

On 4/26/06, Elliot Smith <elliot at townx.org> wrote:
>
> 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
> >
> >
>
>
> _______________________________________________
> Phpwm mailing list
> Phpwm at mailman.lug.org.uk
> https://mailman.lug.org.uk/mailman/listinfo/phpwm
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.lug.org.uk/pipermail/phpwm/attachments/20060426/8c5136d8/attachment-0001.html


More information about the Phpwm mailing list