статические методы, перегрузка

firex

Новичок
статические методы, перегрузка

PHP:
class user
{
	static function delete($id)
	{
		// delete user by id
	}
	public function delete()
	{
		// delete current user
	}
}
Такая запись не допустима в php.
допустима ли она в других языках?

Немного подумав я сделал так:
PHP:
class user
{
	static function delete($id)
	{
		if(isset($this))
		{
			// delete current user
			echo "1";
		}
		else 
		{
			// delete user by id
			echo "2";
		}
	}
}
$user = new user();
$user->delete(); // stdout: 2
user::delete(); // stdout: 2
Такой вариант тоже не срабатывает, есть какие нибудь идеи?
Моя проблема в именовании,
я сделал класс user, в котором есть статический метод delete_user($id), который удаляет пользователя по $id, и публичный метод delete() - враппер delete_user().
Запись : user::delete_user(), мне не нравится. Было бы удобней делать так:
PHP:
user::delete($id);
user->delete();
 

itprog

Cruftsman
PHP:
class user
{
    static function delete($id = null)
    {
        if(is_null($id))
        {
            // delete current user
            echo "1";
        }
        else 
        {
            // delete user by id
            echo "2";
        }
    }
}
?
 

firex

Новичок
PHP:
class user
{
	public $var = 2;
	static function delete($id = null)
	{
		if(is_null($id))
		{
			// delete current user
			echo $this->var; // Using $this when not in object context 
		}
		else 
		{
			// delete user by id
			echo "2";
		}
	}
}
$user = new user();
$user->delete(); // stdout: 2
user::delete(); // stdout: 2
Нет такой вариант не подходит :), нужно получить доступ к атрибуту объекта в случае если статический метод вызван для объекта ( :) , незнаю как даже сказать ).
Только что попробовал в шарпе такая запись допустима... думаю в java тоже.
Появится ли такая ф-кциональность в php?
 

svetasmirnova

маленький монстрик
Ну ты можешь отключить E_STRICT и в стиле php4 написать
PHP:
function delete($id = null) 
...
и вызывать её потом как статическую. Но плохо это.
 
Сверху