|
|
|
| вот такой код:
<?php
class Counter
{
static $counter = 0;
function __construct()
{
echo "constr<br>";
Counter::counter++;
}
function __destruct()
{
// Counter::$counter--;
}
}
$object1 = new Counter;
$object2 = new Counter;
$object3 = new Counter;
$object4 = new Counter;
$object5 = new Counter;
$object6 = new Counter;
$object7 = new Counter;
echo Counter::$counter;
?>
|
вообще должно выводиться семь строчек constr и число 7. но страница пустая. в чем дело может быть?
стоит Денвер состав его такой
Apache 1.3.27 (октябрь 2002 г.)
PHP 4.3.0 (30 декабря 2002)
phpMyAdmin 2.3.0 (август 2002 г.)
MySQL 3.23.53 (ноябрь 2002 г.)
ActivePerl 5.6.1.631 (январь 2002 г.) | |
|
|
|
|
|
|
|
для: SDL
(26.10.2008 в 19:14)
| | если не ошибаюсь __construct.() доступен только с 5 версии... вызывайте конструктор класса по прежней схеме, через обращение к методу, имя которого соответствует имени класса...
| |
|
|
|
|
|
|
|
для: Assessor
(26.10.2008 в 20:17)
| | не понял..
пример напишите, пожалуйста. | |
|
|
|
|
|
|
|
для: SDL
(26.10.2008 в 23:41)
| | Просто смените имя функции "__construct" на "Counter".
Правда, по-моему, замену "__destruct" Вы не найдете. | |
|
|
|
|
|
|
|
для: BinLaden
(26.10.2008 в 23:46)
| | изменил
<?php
class Counter
{
static $n = 0;
function Counter()
{
echo "static";
Counter::$n++;
}
}
$object1 = new Counter;
$object2 = new Counter;
$object3 = new Counter;
echo Counter::$n;
?>
|
результат - тот же. ничего не выводит
более того, если вывести
echo "count(objects):".Counter::$n;
|
то даже надписи count(objects): не будет | |
|
|
|
|
|
|
|
для: SDL
(27.10.2008 в 01:47)
| | А статических членов класса до PHP 5, помоему тоже не было... | |
|
|
|
|
|
|
|
для: cheops
(27.10.2008 в 12:00)
| | так как обойти этот угол, чтобы заработало?
я изменил
на
и ничего не произошло. не пишет | |
|
|
|
|
|
|
|
для: SDL
(27.10.2008 в 13:19)
| |
class Counter
{
function Counter()
{
static $n;
$n++;
echo "static";
echo $n;
}
}
$object1 = new Counter;
$object2 = new Counter;
$object3 = new Counter;
|
по идеи такой код в php4 должен работать... А вообще выводите ошибки в браузер, чтоб было видно на что ругается... | |
|
|
|
|
|
|
|
для: Assessor
(27.10.2008 в 14:22)
| | работает.
фэнькс) | |
|
|
|
|
|
|
|
для: Assessor
(27.10.2008 в 14:22)
| | хм.. вообще смысл объявлять статической переменную был такой, что для всех объектов она будет общей.
То есть в данном случае можно было бы посчитать количествообъявленных объектов (как пример).
если выводить echo $n; или echo Counter::$n; то будет выводиться ошибка Parse error: parse error, unexpected ';', expecting '(' in "..."\project\test.php on line 18
то есть смысл - объявить и использовать некоторую глобальную для данного класса переменную. | |
|
|
|
|
|
|
|
для: SDL
(27.10.2008 в 13:19)
| | вывод ошибок включен? если уж echo ничего не дает, видимо где то фатал произошел | |
|
|
|
|
|
|
|
для: mechanic
(27.10.2008 в 14:22)
| | при коде
<?php
class Counter
{
var $n = 0;
function Counter()
{
Counter::$n++;
}
}
$object1 = new Counter;
$object2 = new Counter;
$object3 = new Counter;
echo "count(objects):".Counter::$n;
?>
|
выводил
Parse error: parse error, unexpected T_INC, expecting '(' in "site"\test.php on line 7
|
впрочем я понял. в php4 некоторые конструкции запрещены. | |
|
|
|
|
|
|
|
для: SDL
(26.10.2008 в 19:14)
| | >стоит Денвер состав его такой
>PHP 4.3.0 (30 декабря 2002)
......
>phpMyAdmin 2.3.0 (август 2002 г.)
......!
>MySQL 3.23.53 (ноябрь 2002 г.)
......!!!
Проапгрейдиться не тянет? | |
|
|
|
|
|
|
|
для: Trianon
(27.10.2008 в 00:03)
| | не тянет)
нужен именно старый вариант. свои причины | |
|
|
|