Re: [PHP-DEV] abstract functions

2002-11-09 Thread Jens Rehsack
Leon Atkinson wrote:

How about testing for the parent?  Such as:

salutation = 'Hello';
}

 function test()
 {
  print($this->salutation);
 }
 }

class MyOtherClass extends MyClass
{
 function MyOtherClass()
 {
  MyClass::MyClass();
 }
}

//use the abstract class correctly
$c = new MyOtherClass;
$c->test();

//use it incorrectly, get an exception
$c = new MyClass;

?>

Regards,
Leon


This didn't solve the problem. Each abstract class must check if it's
an instantiation of sth. is itself ...
Supporting an "abstract" feature like every OO-language would make it 
much easier.
Of couse, since it is not available I use constructs like shown.

I didn't need help to find such constructs, I want suggest adding the 
functionality for abstract methods.

I accept that in ZE2 no private methods are available. I even accept 
that there's neither operator overloading nor multiple inheritation. And 
even if I miss that most: that there will no access sections like in 
Object Pascal or C++ (private/protected/public[/published]) and friend 
declaration.

I just want suggest adding abstract feature, because that could make 
many things more OO-like and much easier to maintain...

But thanks for the suggestions ...

Greetings,
Jens

- Original Message -
From: "Jens Rehsack" <[EMAIL PROTECTED]>
To: "Andrei Zmievski" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Saturday, November 09, 2002 8:22 AM
Subject: Re: [PHP-DEV] abstract functions




Andrei Zmievski wrote:


ZE1 way:

class MyClass {
   function MyClass()
   {
die('MyClass is an abstract class');
   }
}

ZE2 way:

class AbstractClassException {
}

class MyClass {
   function MyClass()
   {
   throw new AbstractClassException();
   }
}

On Sat, 09 Nov 2002, Jens Rehsack wrote:


That's not ok, cause (very simple)
class Calcer
{
  function Calcer() { die('abstract'); }
  function ShowResult( $a )
  {
echo $this->CalcResult( $a )
  }
  abstract function CalcResult( $a );
}

class Square extends Calcer
{
  function Square()
  {
Calcer::Calcer(); // cause inherited could do sth.
  }

  function CalcResult( $a )
  {
return $a * $a;
  }
}

class Adder extends Calcer
{
  var $Summand;

  function Adder( $aSummand )
  {
Calcer::Calcer();
$this->Summand = $aSummand;
  }

  function CalcResult( $a )
  {
return $a + $this->Summand;
  }
}

I can give a more complex example, if you want, but it's not ok to die
in constructor of an abstract class, cause the main logic could be
implemented in this class and it needs to be derived cause for helper
functions...

An example is a cache control class which is able to access cached
objects through it real name and is either able to store in filesystem
or in database.

Jens


Hi,

does PHP4 with the ZE2 supports abstract function like Delphi or C++?
That would be very useful for class development, cause we can avoid
testing if a class is abstract if an abstract class couldn't be
instantiated?

Syntax could be like in C++
class X
{
X(){}
int y() = 0;
}

or little bit more like pascal

class X
{
X(){} // PHP
function x(); abstract;
}

or

class X
{
X(){} // PHP
abstract function x();
}

Greetings,
Jens
--
L i  W W W  i Jens Rehsack
LW W W
L i   W   W W   W   i  nnnLiWing IT-Services
L iW W   W Wi  n  n  g   g
  i W W i  n  n  g   gFriesenstraße 2
06112 Halle
   g
   g   g
Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/


--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php





-Andrei   http://www.gravitonic.com/
* A feature is a bug with seniority. *






--
L i  W W W  i Jens Rehsack
LW W W
L i   W   W W   W   i  nnnLiWing IT-Services
L iW W   W Wi  n  n  g   g
  i W W i  n  n  g   gFriesenstraße 2
  06112 Halle
 g
 g   g
Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/



--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php










--
L i  W W W  i Jens Rehsack
LW W W
L i   W   W W   W   i  nnnLiWing IT-Services
L iW W   W Wi  n  n  g   g
  i W W i  n  n  g   gFriesenstraße 2
  06112 Halle
 

Re: [PHP-DEV] abstract functions

2002-11-09 Thread Leon Atkinson
How about testing for the parent?  Such as:

salutation = 'Hello';
}

 function test()
 {
  print($this->salutation);
 }
 }

class MyOtherClass extends MyClass
{
 function MyOtherClass()
 {
  MyClass::MyClass();
 }
}

//use the abstract class correctly
$c = new MyOtherClass;
$c->test();

//use it incorrectly, get an exception
$c = new MyClass;

?>

Regards,
Leon


- Original Message -
From: "Jens Rehsack" <[EMAIL PROTECTED]>
To: "Andrei Zmievski" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Saturday, November 09, 2002 8:22 AM
Subject: Re: [PHP-DEV] abstract functions


> Andrei Zmievski wrote:
> > ZE1 way:
> >
> >  class MyClass {
> > function MyClass()
> > {
> >  die('MyClass is an abstract class');
> > }
> >  }
> >
> > ZE2 way:
> >
> >  class AbstractClassException {
> >  }
> >
> >  class MyClass {
> > function MyClass()
> > {
> > throw new AbstractClassException();
> > }
> >  }
> >
> > On Sat, 09 Nov 2002, Jens Rehsack wrote:
>
> That's not ok, cause (very simple)
> class Calcer
> {
>function Calcer() { die('abstract'); }
>function ShowResult( $a )
>{
>  echo $this->CalcResult( $a )
>}
>abstract function CalcResult( $a );
> }
>
> class Square extends Calcer
> {
>function Square()
>{
>  Calcer::Calcer(); // cause inherited could do sth.
>}
>
>function CalcResult( $a )
>{
>  return $a * $a;
>}
> }
>
> class Adder extends Calcer
> {
>var $Summand;
>
>function Adder( $aSummand )
>{
>  Calcer::Calcer();
>  $this->Summand = $aSummand;
>}
>
>function CalcResult( $a )
>{
>  return $a + $this->Summand;
>}
> }
>
> I can give a more complex example, if you want, but it's not ok to die
> in constructor of an abstract class, cause the main logic could be
> implemented in this class and it needs to be derived cause for helper
> functions...
>
> An example is a cache control class which is able to access cached
> objects through it real name and is either able to store in filesystem
> or in database.
>
> Jens
> >>Hi,
> >>
> >>does PHP4 with the ZE2 supports abstract function like Delphi or C++?
> >>That would be very useful for class development, cause we can avoid
> >>testing if a class is abstract if an abstract class couldn't be
> >>instantiated?
> >>
> >>Syntax could be like in C++
> >>class X
> >>{
> >>  X(){}
> >>  int y() = 0;
> >>}
> >>
> >>or little bit more like pascal
> >>
> >>class X
> >>{
> >>  X(){} // PHP
> >>  function x(); abstract;
> >>}
> >>
> >>or
> >>
> >>class X
> >>{
> >>  X(){} // PHP
> >>  abstract function x();
> >>}
> >>
> >>Greetings,
> >>Jens
> >>--
> >>L i  W W W  i Jens Rehsack
> >>LW W W
> >>L i   W   W W   W   i  nnnLiWing IT-Services
> >>L iW W   W Wi  n  n  g   g
> >>  i W W i  n  n  g   gFriesenstraße 2
> >>  06112 Halle
> >> g
> >> g   g
> >>Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
> >>Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/
> >>
> >>
> >>--
> >>PHP Development Mailing List <http://www.php.net/>
> >>To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
> >
> >
> > -Andrei   http://www.gravitonic.com/
> > * A feature is a bug with seniority. *
> >
> >
>
>
>
> --
> L i  W W W  i Jens Rehsack
> LW W W
> L i   W   W W   W   i  nnnLiWing IT-Services
> L iW W   W Wi  n  n  g   g
>   i W W i  n  n  g   gFriesenstraße 2
>06112 Halle
>   g
>   g   g
> Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
> Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/
>
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php
>


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] abstract functions

2002-11-09 Thread Jens Rehsack
Andrei Zmievski wrote:

ZE1 way:

 class MyClass {
function MyClass()
{
 die('MyClass is an abstract class');
}
 }

ZE2 way:

 class AbstractClassException {
 }

 class MyClass {
function MyClass()
{
throw new AbstractClassException();
}
 }
 
On Sat, 09 Nov 2002, Jens Rehsack wrote:

That's not ok, cause (very simple)
class Calcer
{
  function Calcer() { die('abstract'); }
  function ShowResult( $a )
  {
echo $this->CalcResult( $a )
  }
  abstract function CalcResult( $a );
}

class Square extends Calcer
{
  function Square()
  {
Calcer::Calcer(); // cause inherited could do sth.
  }

  function CalcResult( $a )
  {
return $a * $a;
  }
}

class Adder extends Calcer
{
  var $Summand;

  function Adder( $aSummand )
  {
Calcer::Calcer();
$this->Summand = $aSummand;
  }

  function CalcResult( $a )
  {
return $a + $this->Summand;
  }
}

I can give a more complex example, if you want, but it's not ok to die 
in constructor of an abstract class, cause the main logic could be 
implemented in this class and it needs to be derived cause for helper 
functions...

An example is a cache control class which is able to access cached 
objects through it real name and is either able to store in filesystem 
or in database.

Jens
Hi,

does PHP4 with the ZE2 supports abstract function like Delphi or C++? 
That would be very useful for class development, cause we can avoid 
testing if a class is abstract if an abstract class couldn't be 
instantiated?

Syntax could be like in C++
class X
{
 X(){}
 int y() = 0;
}

or little bit more like pascal

class X
{
 X(){} // PHP
 function x(); abstract;
}

or

class X
{
 X(){} // PHP
 abstract function x();
}

Greetings,
Jens
--
L i  W W W  i Jens Rehsack
LW W W
L i   W   W W   W   i  nnnLiWing IT-Services
L iW W   W Wi  n  n  g   g
  i W W i  n  n  g   gFriesenstraße 2
 06112 Halle
g
g   g
Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/


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




-Andrei   http://www.gravitonic.com/
* A feature is a bug with seniority. *






--
L i  W W W  i Jens Rehsack
LW W W
L i   W   W W   W   i  nnnLiWing IT-Services
L iW W   W Wi  n  n  g   g
  i W W i  n  n  g   gFriesenstraße 2
  06112 Halle
 g
 g   g
Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/



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




Re: [PHP-DEV] abstract functions

2002-11-09 Thread Andrei Zmievski
ZE1 way:

 class MyClass {
function MyClass()
{
 die('MyClass is an abstract class');
}
 }

ZE2 way:

 class AbstractClassException {
 }

 class MyClass {
function MyClass()
{
throw new AbstractClassException();
}
 }
 
On Sat, 09 Nov 2002, Jens Rehsack wrote:
> Hi,
> 
> does PHP4 with the ZE2 supports abstract function like Delphi or C++? 
> That would be very useful for class development, cause we can avoid 
> testing if a class is abstract if an abstract class couldn't be 
> instantiated?
> 
> Syntax could be like in C++
> class X
> {
>   X(){}
>   int y() = 0;
> }
> 
> or little bit more like pascal
> 
> class X
> {
>   X(){} // PHP
>   function x(); abstract;
> }
> 
> or
> 
> class X
> {
>   X(){} // PHP
>   abstract function x();
> }
> 
> Greetings,
> Jens
> -- 
> L i  W W W  i Jens Rehsack
> LW W W
> L i   W   W W   W   i  nnnLiWing IT-Services
> L iW W   W Wi  n  n  g   g
>   i W W i  n  n  g   gFriesenstraße 2
>   06112 Halle
>  g
>  g   g
> Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
> Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/
> 
> 
> -- 
> PHP Development Mailing List 
> To unsubscribe, visit: http://www.php.net/unsub.php



-Andrei   http://www.gravitonic.com/
* A feature is a bug with seniority. *

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




[PHP-DEV] abstract functions

2002-11-09 Thread Jens Rehsack
Hi,

does PHP4 with the ZE2 supports abstract function like Delphi or C++? 
That would be very useful for class development, cause we can avoid 
testing if a class is abstract if an abstract class couldn't be 
instantiated?

Syntax could be like in C++
class X
{
  X(){}
  int y() = 0;
}

or little bit more like pascal

class X
{
  X(){} // PHP
  function x(); abstract;
}

or

class X
{
  X(){} // PHP
  abstract function x();
}

Greetings,
Jens
--
L i  W W W  i Jens Rehsack
LW W W
L i   W   W W   W   i  nnnLiWing IT-Services
L iW W   W Wi  n  n  g   g
  i W W i  n  n  g   gFriesenstraße 2
  06112 Halle
 g
 g   g
Tel.:  +49 - 3 45 - 5 17 05 91ggg e-Mail: <[EMAIL PROTECTED]>
Fax:   +49 - 3 45 - 5 17 05 92http://www.liwing.de/


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