Re: [PHP] Re: some kind of library loader - Thanks

2002-04-04 Thread Arpad Tamas


Ok, Thank you for your help Miguel and Maxim, I'm trying to do it by 
the help of your suggestions.

Arpi

  Also, you can find out if a class was defined by calling
  'class_exists()'. In this way you might save something.
  The best way thought is what Miguel was saying: load the files
  conditionally with a logic.
 
  That's what I'm trying to do, but still searching for the logic.
  But as I see, there's no better way of doing this other than
  checking if the needed classes are defined before every
  instantiation.

 Perhaps you can conjure up some sort of namespace scheme, and then
 use a global array to track which class files have been loaded, or
 which classes have been instantiated, or whatever it is you need to
 keep track of.

 In your file with a dependency:

   global $LOAD_STATUS;
   if (!$LOAD_STATUS['classes-db-queryops'])
  include 'lib/classes/db/queryops.php';

 In lib/classes/db/queryops.php:

   global $LOAD_STATUS;
   $LOAD_STATUS['class-db-queryops'] = 1;

 Seems fairly cheap to do.

 miguel

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP] Re: some kind of library loader - Thanks

2002-04-04 Thread Maxim Maletsky

Go wild Arpi!



Maxim Maletsky

 Founder, Chief Developer
 PHPBeginner.com (Where PHP Begins)

 www.PHPBeginner.com
 [EMAIL PROTECTED]




 -Original Message-
 From: Arpad Tamas [mailto:[EMAIL PROTECTED]]
 Sent: Thursday, April 04, 2002 10:34 AM
 To: Miguel Cruz
 Cc: Maxim Maletsky; [EMAIL PROTECTED]
 Subject: Re: [PHP] Re: some kind of library loader - Thanks
 
 
 Ok, Thank you for your help Miguel and Maxim, I'm trying to do it by
 the help of your suggestions.
 
   Arpi
 
   Also, you can find out if a class was defined by calling
   'class_exists()'. In this way you might save something.
   The best way thought is what Miguel was saying: load the files
   conditionally with a logic.
  
   That's what I'm trying to do, but still searching for the logic.
   But as I see, there's no better way of doing this other than
   checking if the needed classes are defined before every
   instantiation.
 
  Perhaps you can conjure up some sort of namespace scheme, and then
  use a global array to track which class files have been loaded, or
  which classes have been instantiated, or whatever it is you need to
  keep track of.
 
  In your file with a dependency:
 
global $LOAD_STATUS;
if (!$LOAD_STATUS['classes-db-queryops'])
   include 'lib/classes/db/queryops.php';
 
  In lib/classes/db/queryops.php:
 
global $LOAD_STATUS;
$LOAD_STATUS['class-db-queryops'] = 1;
 
  Seems fairly cheap to do.
 
  miguel


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Re: some kind of library loader

2002-04-03 Thread Miguel Cruz

On Thu, 4 Apr 2002, Maxim Maletsky wrote:
 You can try to load all those classes as texts into a db and then to execute 
 the needed ones as eval()ed strings. It could be easy for you to create the 
 logic because the PHP code are stings and are never included but SELECTed. 
 Not sure if this could be wise to do, just throwing out an idea. 

Offhand I'm guessing the payoff wouldn't be great, because you'd lose the 
benefit of PHP's own code caching. Depends on how much of this voluminous 
code actually gets used on any one run, I suppose. But why not do the same 
thing with conditional includes, and then at least let PHP cache it?

miguel


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Re: some kind of library loader

2002-04-03 Thread Tamás Árpád

 On Thu, 4 Apr 2002, Maxim Maletsky wrote:
  You can try to load all those classes as texts into a db and then to
execute
  the needed ones as eval()ed strings. It could be easy for you to create
the
  logic because the PHP code are stings and are never included but
SELECTed.
  Not sure if this could be wise to do, just throwing out an idea.

 Offhand I'm guessing the payoff wouldn't be great, because you'd lose the
 benefit of PHP's own code caching. Depends on how much of this voluminous
 code actually gets used on any one run, I suppose. But why not do the same
 thing with conditional includes, and then at least let PHP cache it?

Thanks for your suggestion Maxim and Miguel.

Unfortunately storing code in db wouldn't solve my problem, becuse then I
still had to recognise when the classes are really needed. Now in the 52k
lines of code we just have
$x = new SomeClass();
$y = new OtherClass(); or
$result = AnotherClass::staticMethod(); statements, and we have many of
them.
That's why I'm searching for a sollution that we can use without rewrite all
these calls with the extension of a test if the needed class's definition
was or wasn't loaded before.
So I'd like to use conditional includes, and my first thought was that
somehow I can make it with a custom error handler, but unfortunately I
realized quickly it's not that simple.
Maybe you or someone can help, If I explain my problem in a little more
detail.
We have a portal-creator system (like many of you, I guess), with an own
developed template system. Of course we sell it to customers who have their
own needs. They create the designs, or tell us how the site should look, and
the created templates determine what template classes are needed for
generating the pages. The template classes require other base classes that
are responsible for handling the db storage.
We have about 430 classes (I misscalculated it in my firts mail), and they
have many cross reference to each other. So it's hard to know explicitly
if a class definition is needed, except of course at every new operator, and
static method call, but there are plenty of them.
Parsing of (almost) all of the php code takes about 1,5secs on an athlon 800
cpu, which is far from reasonable. I expect that with conditional includes
at least half of the code wouldn't get parsed on a normal site, and even
less on a smaller site.
I wrote that I tried many code caches (I sent the results in deatils in
December), but none of them - except Zend Cache - made significant speed-up
(PHP-Accelerator also gave good results for speed, but I got many errors).
Unfortunatelly Zend Cache isn't affordable for many of our client,
especially the smaller ones, who don't need many of the features of the
system, so they would benefit much from the conditional includes.

I hope someone who had the same situation can help, or at least I get
reinforcement, that I can't by-pass the hard way (to write an if clause
before every use of a class wether it was loaded or not).
Thanks for your help,
Arpi



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP] Re: some kind of library loader

2002-04-03 Thread Maxim Maletsky


Have you considered simply using require_once?

Also, you can find out if a class was defined by calling
'class_exists()'. In this way you might save something.

The best way thought is what Miguel was saying: load the files
conditionally with a logic.


Sincerely,

Maxim Maletsky
Founder, Chief Developer

PHPBeginner.com (Where PHP Begins)
[EMAIL PROTECTED]
www.phpbeginner.com


 -Original Message-
 From: Tamás Árpád [mailto:[EMAIL PROTECTED]]
 Sent: Wednesday, April 03, 2002 9:51 PM
 To: Miguel Cruz; Maxim Maletsky
 Cc: [EMAIL PROTECTED]
 Subject: Re: [PHP] Re: some kind of library loader
 
  On Thu, 4 Apr 2002, Maxim Maletsky wrote:
   You can try to load all those classes as texts into a db and then
to
 execute
   the needed ones as eval()ed strings. It could be easy for you to
create
 the
   logic because the PHP code are stings and are never included but
 SELECTed.
   Not sure if this could be wise to do, just throwing out an idea.
 
  Offhand I'm guessing the payoff wouldn't be great, because you'd
lose the
  benefit of PHP's own code caching. Depends on how much of this
voluminous
  code actually gets used on any one run, I suppose. But why not do
the same
  thing with conditional includes, and then at least let PHP cache it?
 
 Thanks for your suggestion Maxim and Miguel.
 
 Unfortunately storing code in db wouldn't solve my problem, becuse
then I
 still had to recognise when the classes are really needed. Now in the
52k
 lines of code we just have
 $x = new SomeClass();
 $y = new OtherClass(); or
 $result = AnotherClass::staticMethod(); statements, and we have many
of
 them.
 That's why I'm searching for a sollution that we can use without
rewrite all
 these calls with the extension of a test if the needed class's
definition
 was or wasn't loaded before.
 So I'd like to use conditional includes, and my first thought was that
 somehow I can make it with a custom error handler, but unfortunately I
 realized quickly it's not that simple.
 Maybe you or someone can help, If I explain my problem in a little
more
 detail.
 We have a portal-creator system (like many of you, I guess), with an
own
 developed template system. Of course we sell it to customers who have
their
 own needs. They create the designs, or tell us how the site should
look, and
 the created templates determine what template classes are needed for
 generating the pages. The template classes require other base
classes that
 are responsible for handling the db storage.
 We have about 430 classes (I misscalculated it in my firts mail), and
they
 have many cross reference to each other. So it's hard to know
explicitly
 if a class definition is needed, except of course at every new
operator, and
 static method call, but there are plenty of them.
 Parsing of (almost) all of the php code takes about 1,5secs on an
athlon 800
 cpu, which is far from reasonable. I expect that with conditional
includes
 at least half of the code wouldn't get parsed on a normal site, and
even
 less on a smaller site.
 I wrote that I tried many code caches (I sent the results in deatils
in
 December), but none of them - except Zend Cache - made significant
speed-up
 (PHP-Accelerator also gave good results for speed, but I got many
errors).
 Unfortunatelly Zend Cache isn't affordable for many of our client,
 especially the smaller ones, who don't need many of the features of
the
 system, so they would benefit much from the conditional includes.
 
 I hope someone who had the same situation can help, or at least I get
 reinforcement, that I can't by-pass the hard way (to write an if
clause
 before every use of a class wether it was loaded or not).
 Thanks for your help,
 Arpi
 
 
 
 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Re: some kind of library loader

2002-04-03 Thread Tamás Árpád

Have you considered simply using require_once?
Yes, actually I'm using it now, but it's not enough.

Also, you can find out if a class was defined by calling
'class_exists()'. In this way you might save something.
The best way thought is what Miguel was saying: load the files
conditionally with a logic.
That's what I'm trying to do, but still searching for the logic.
But as I see, there's no better way of doing this other than checking if the
needed classes are defined before every instantiation.

Thanks for your help,
Arpi



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Re: some kind of library loader

2002-04-03 Thread Miguel Cruz

On Wed, 3 Apr 2002, Tamás Árpád wrote:
 Also, you can find out if a class was defined by calling
 'class_exists()'. In this way you might save something.
 The best way thought is what Miguel was saying: load the files
 conditionally with a logic.
 That's what I'm trying to do, but still searching for the logic.
 But as I see, there's no better way of doing this other than checking if the
 needed classes are defined before every instantiation.

Perhaps you can conjure up some sort of namespace scheme, and then use a 
global array to track which class files have been loaded, or which classes 
have been instantiated, or whatever it is you need to keep track of.

In your file with a dependency:

  global $LOAD_STATUS;
  if (!$LOAD_STATUS['classes-db-queryops'])
 include 'lib/classes/db/queryops.php';

In lib/classes/db/queryops.php:

  global $LOAD_STATUS;
  $LOAD_STATUS['class-db-queryops'] = 1;

Seems fairly cheap to do.

miguel


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php