Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [php] перезагрузка методов и свойств класса / 25 сообщений из 26, страница 1 из 2
07.03.2013, 12:35
    #38177108
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
подскажите как выполнить такую конструкцию?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$a = new a();
$a->b->c('arguments');

class a {
	public function c() {
		// имя класса
		// имя объекста из под которого вызван метод
		// имя объекта
	}
}


Спасибо!
...
Рейтинг: 0 / 0
07.03.2013, 12:41
    #38177116
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
такая конструкция не работает

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?php

$a = new a();
$a->b->c('arguments');

class a {

	public function __construct() {
		print "Класс: " . __CLASS__ . "\n";
	}

	public function __get($name) {
		print "Объект: " . $name . "\n";
	}

	public function __call($name, $arguments) {
		print "Метод: " . $name . "\n";
		print "Аргументы:\n";
		print_r($arguments);
	}
}
?>


__call не отдает результаты
...
Рейтинг: 0 / 0
07.03.2013, 12:43
    #38177121
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseous
Код: php
1.
имя объекта


__CLASS__
а имя объекта то чем поможет?
...
Рейтинг: 0 / 0
07.03.2013, 12:45
    #38177128
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseous,

изначально какая задача?
а то ощущение что пытаетесь сделать операцию на лазах через жопу.
...
Рейтинг: 0 / 0
07.03.2013, 12:52
    #38177141
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
r u,

задача получить в методе класса b, с (+аргументы)
при таком вызове
$a = new a();
$a->b->c('arguments');
...
Рейтинг: 0 / 0
07.03.2013, 12:57
    #38177154
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseous$a->b->c('arguments');
это вы имеете в виду что?
у объекта $a вызываем метод b, потом метод c ?
или b это свойство, тоже объект?
...
Рейтинг: 0 / 0
07.03.2013, 13:04
    #38177175
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
r u,

мне надо получить в результате

class любое название {
public function любое название() {
// имя объекта из под которого вызван метод (в моем случае b)
// имя метода и аргументы (в моем случае с("аргументы"))
}
}

вызов всегда
$любое название = new любое название();
$любое название->b->c('arguments');
...
Рейтинг: 0 / 0
07.03.2013, 13:08
    #38177187
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
вот что я получаю
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$a = new a();
$a->b->c('arguments');

final class a {

	public function __get($name) {
		print "Объект: " . $name . "\n";
	}

	public function с($name) {
		print "Метод: c() Аргументы: '.$name.'\n";
	}
}


Объект: b
PHP Fatal error: Call to a member function c()...
...
Рейтинг: 0 / 0
07.03.2013, 13:21
    #38177211
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseousPHP Fatal error: Call to a member function c()...
ну правильно.
где код класса объекта B ?
метода c() то для класса A описан.
...
Рейтинг: 0 / 0
07.03.2013, 13:24
    #38177217
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
где код класса объекта B ?класса B не будет! надо перезагрузить как-то в это же класс
то есть получить в классе A

метода c() то для класса A описан.поэтому он и описан для класса А так как только он есть и будет

надо перезагрузить в самого себя
...
Рейтинг: 0 / 0
07.03.2013, 13:27
    #38177224
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseous,

если будет тотже класс. то какой в этом смысл?

в общем пока так и непонятна задача начальная, что именно вы хотите сделать.
возможно решение намного проще. чем вы городите...
...
Рейтинг: 0 / 0
07.03.2013, 13:32
    #38177236
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseousr u,

задача получить в методе класса b, с (+аргументы)
при таком вызове
$a = new a();
$a->b->c('arguments');

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
$a = new A();
$a->b->c('arguments');

class A {
public $b;
	public function __construct() {
		$this->b = new B($this);
	}
}
class B {
public $b;
protected $a;
	public function __construct($a) {
		$this->a = $a;
	}

public function c() {
var_dump($this->a, func_get_args());
}
}
...
Рейтинг: 0 / 0
07.03.2013, 13:35
    #38177243
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
Ренат,

спасибо огромное, но надо все в одном классе (
...
Рейтинг: 0 / 0
07.03.2013, 13:55
    #38177284
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseousr u,

задача получить в методе класса b, с (+аргументы)
при таком вызове
$a = new a();
$a->b->c('arguments');
так чтоли?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$a = new a();
$a->b->c('arguments');

class a {


	public function __get($name) {
		print "Объект: " . $name . "\n";
		return $this;
	}

	public function __call($name, $arguments) {
		print "Метод: " . $name . "\n";
		print "Аргументы:\n";
		print_r($arguments);
	}
}
...
Рейтинг: 0 / 0
07.03.2013, 14:05
    #38177303
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
Ренат, спасибо огромное!!!!!!!!!!! )))
...
Рейтинг: 0 / 0
07.03.2013, 19:43
    #38177741
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseous,

и какой смысл во всем этом?
...
Рейтинг: 0 / 0
08.03.2013, 16:03
    #38178117
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
r unauseous,

и какой смысл во всем этом?
видимо синтаксис jquery понравился....
такой помойму propel, activerecord интерфейс имеют
...
Рейтинг: 0 / 0
08.03.2013, 17:12
    #38178146
Method chaining
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
авторвидимо синтаксис jquery понравился....
http://en.wikipedia.org/wiki/Method_chaining - только я тоже не понял, зачем ТС этим озадачился?
...
Рейтинг: 0 / 0
09.03.2013, 03:29
    #38178357
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
все намного проще, это API для сайта

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<?php

final class api {

	public function __construct($token) {
		if (isset($token)) {
			$this->token = $token;
		}
	}

	public function __get($name) {
		if (isset($name)) {
			$this->class = $name;
		}

		return $this;
	}

	public function __call($name, $arguments) {
		if (isset($name) && isset($arguments)) {
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, 'http://api.XXXXXXXXXXXXXXXXXXXXX.ru/');
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch, CURLOPT_TIMEOUT, 15);
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
					'token' => $this->token,
					'class' => $this->class,
					'method' => $name,
					'arguments' => $arguments
				)));
			$this->{$this->class}->$name = curl_exec($ch);
			curl_close($ch);
		}
	}
}
?>


пользователь читает phpdoc и вызывает те классы и методы которые ему нужны для работы,
сервер проверяет получаемые данные и отдает результат в случае успеха

пример использования
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?php

try {
	$api = new api('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
	$api->className->methodName('arguments');
	if (isset($api->className->methodName)) {
		print_r($api->className->methodName);
	}
} catch (Exception $exc) {
	print $exc->getTraceAsString();
}
?>


таким образом API класс всегда статичный, далее уже развивается только документация ;)

Всем спасибо за помощь
...
Рейтинг: 0 / 0
09.03.2013, 03:30
    #38178359
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
r uа то ощущение что пытаетесь сделать операцию на лазах через жопу.фу! где ваше воспитание!?
...
Рейтинг: 0 / 0
09.03.2013, 16:22
    #38178487
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseousтаким образом API класс всегда статичный, далее уже развивается только документация ;)
ну и зачем для этого было городить такой огород?
классы реализаций и методы то все равно нужно писать.
посмотрите реализации АПИ для начала. вы зачемто пытаетесь сдеалть сложно и запутанно - вместо того чтоб сделать просто и понятно.
...
Рейтинг: 0 / 0
12.03.2013, 15:24
    #38181477
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
r unauseousтаким образом API класс всегда статичный, далее уже развивается только документация ;)
ну и зачем для этого было городить такой огород?
классы реализаций и методы то все равно нужно писать.
посмотрите реализации АПИ для начала. вы зачемто пытаетесь сдеалть сложно и запутанно - вместо того чтоб сделать просто и понятно.
Вы наверное не так меня поняли, библиотека уже есть,
в ней около ста классов и в каждом в районе два-пять методов..

Библиотека разработана нашей компанией для публичного использования,
ну и соответственно стал вопрос доступа к классам и методам

пхпдок уже готов, есть детальное описание каждого из классов..
осталось только сделать доступ...

Мне встречались аналогичные модели - через перезагрузку методов
ну и соответственно было принято решение использовать данную модель

Я понимаю что дела пахнет велосипедом, одна на мой взгляд достаточно
компактно и удобно

Еще раз спасибо за содействие
...
Рейтинг: 0 / 0
12.03.2013, 16:13
    #38181580
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
Код: php
1.
2.
3.
4.
5.
6.
7.
	public function __get($name) {
		if (isset($name)) {
			$this->class = $name;
		}

		return $this;
	}


А isset тут зачем?)
...
Рейтинг: 0 / 0
12.03.2013, 23:52
    #38182206
nauseous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
Ренат, точно )) еще думаю курл на file_get_contents + POST переложить
...
Рейтинг: 0 / 0
14.03.2013, 10:18
    #38183308
Anjey aka PM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] перезагрузка методов и свойств класса
nauseousРенат, точно )) еще думаю курл на file_get_contents + POST переложить

двигаемся в обратном направлении по дереву эволюции
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [php] перезагрузка методов и свойств класса / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]