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
L W W W
L i W W W W i nnn gggg LiWing IT-Services
L i W W W W i n n g g
LLLL i W W i n n g g Friesenstraße 2
gggg 06112 Halle
g
g g
Tel.: +49 - 3 45 - 5 17 05 91 ggg e-Mail: <[EMAIL PROTECTED]>
Fax: +49 - 3 45 - 5 17 05 92 http://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
L        W     W     W
L     i   W   W W   W   i  nnn    gggg    LiWing IT-Services
L     i    W W   W W    i  n  n  g   g
LLLL  i     W     W     i  n  n  g   g    Friesenstraße 2
                                  gggg    06112 Halle
                                     g
                                 g   g
Tel.:  +49 - 3 45 - 5 17 05 91    ggg     e-Mail: <[EMAIL PROTECTED]>
Fax:   +49 - 3 45 - 5 17 05 92            http://www.liwing.de/



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

Reply via email to