PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (13): В начало « ... 5 6 7 8 9 [10] 11 12 13 »

> Найдено сообщений: 190
lawer85 Отправлено: 10 Июля, 2013 - 00:00:11 • Тема: Передать обычному полю объекта значение статического • Форум: Вопросы новичков

Ответов: 4
Просмотров: 148
Есть такой код

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         class Rectangle {
  3.        
  4.                 public $x;
  5.                 public $y;
  6.                 public $w;
  7.                 public $h;
  8.                 public $id;
  9.                 static public $id_next = 0;
  10.                
  11.                 public function __construct($x, $y, $w, $h) {
  12.                         $this->x = $x;
  13.                         $this->y = $y;
  14.                         $this->w = $w;
  15.                         $this->h = $h;
  16.                         $this->id = $id_next;
  17.                         self::$id_next++;
  18.                 }
  19.                
  20.                 public function __toString() {
  21.                         return "(".$this->x."; ".$this->y."; ".$this->w."; ".$this->h."; ".$this->id.")<br />";
  22.                 }
  23.        
  24.                 public function __clone() {
  25.                         self::$id_next++;
  26.                         $this->id;
  27.                 }
  28.        
  29.         }
  30.        
  31. $Rectangle = new Rectangle(5, 7, 10, 30);
  32. echo $Rectangle->id."<br />";
  33. echo $Rectangle;
  34. echo "<br />";
  35. echo Rectangle::$id_next;
  36. echo "<br />";
  37. $Rectangle_1 = clone $Rectangle;
  38. echo "<br />";
  39. echo Rectangle::$id_next;
  40. ?>


Вроде при создании объекта через конструктор значению поля id должно передаваться значение статического поля $id_next, т.е. 0, но это не происходит. Почему?

echo $Rectangle->id."<br />"; - это строка ничего не выдает.

echo $Rectangle; выдает параметры объекта и последнее значение в скобках после ; пустое
lawer85 Отправлено: 05 Июля, 2013 - 13:30:49 • Тема: Непонятное поведение скрипта • Форум: Вопросы новичков

Ответов: 4
Просмотров: 163
esterio пишет:
PHP:
скопировать код в буфер обмена
  1. public static function write($x, $y) {
  2.                
  3.                 return file_put_contents($x, $y);
  4.         }
  5. echo Math::write("a.txt", "печатный текст");

file_put_contents
Цитата:
Функция идентична последовательному вызову функций fopen(), fwrite() и fclose(). Возвращаемым функцией значением является количество записанных в файл байтов.


Спасибо. Убрал слово return из кода и теперь так как мне надо
lawer85 Отправлено: 05 Июля, 2013 - 13:23:33 • Тема: Непонятное поведение скрипта • Форум: Вопросы новичков

Ответов: 4
Просмотров: 163
Есть такой код

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. mkdir("text");
  3. chdir("text");
  4. file_put_contents("a.txt", "");
  5. file_put_contents("b.txt", "");
  6. file_put_contents("c.txt", "");
  7.  
  8.  
  9. class Math {
  10.  
  11.         public static $dir = "text";
  12.        
  13.         public static function read($x) {
  14.                 echo file_get_contents($x);
  15.         }
  16.        
  17.         public static function write($x, $y) {
  18.                
  19.                 return file_put_contents($x, $y);
  20.         }
  21. }
  22.  
  23. echo Math::write("a.txt", "печатный текст");
  24. echo Math::read("a.txt")."<br />";
  25.  
  26. ?>



По идее он должен считать файл a.txt и вывести текст, он так и делает, НО почему-то впереди текста выводит кол-во символов
lawer85 Отправлено: 02 Июля, 2013 - 21:17:19 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
EuGen пишет:
К сожалению, для понимания ООП, нужно прежде всего понять его в абстракции от самой реализации в коде - а это достаточно комплексный подход. Многое зависит от опыта - причём тренировки как логики, так и проектирования и самого абстрактного мышления. Краткий совет - делайте пока так, как получается, со временем сможете осознать парадигму ООП полностью.


Спасибо.
(Добавление)

хотел бы я иметь такого учителя Подмигивание
lawer85 Отправлено: 02 Июля, 2013 - 19:56:07 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
EuGen пишет:
Начать с того, что Ваш код - не следует ООП-принципам.
По поводу же самого кода - в этой строке Вы вызываете метод без указания самого объекта (подозреваю, второе условие должно быть не GetDistance, а $this->GetDistance)
lawer85 пишет:
if (($this->r + $circle->r) > $this->GetDistance($circle_1) and GetDistance($circle_1) < $this->r) return "true";

к Вашим услугам также всегда http://phpfaq.ru/debug


Да действительно там нужно было написать $this->GetDistance моя невнимательность. Интересно что за принципы такие. Я просто новичок и для меня код что я написал если он выполняет то, что от него жду, уже большой прогресс. Но очень интересно было бы услышать какой(ие) принци(ы) он нарушает.
lawer85 Отправлено: 02 Июля, 2013 - 19:23:29 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
EuGen пишет:
Примерно так:
Спойлер (Отобразить)

- в коде я ввёл ещё один частный случай пересечения (поскольку не совсем корректно относить его ко внутреннему или внешнему) - INTERSECTION_LIMIT - то есть центр одной окружности лежит на другой, предельный случай между внутренним и внешним состоянием.



Большое спасибо, что помогаете!

Но можно именно на моем примере, почему php ругается на мой код. Просто я новичок. С ООП только что познакомился, а кое-что из Вашего примера вообще не знаю еще.
lawer85 Отправлено: 01 Июля, 2013 - 19:20:29 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
EuGen пишет:
lawer85 пишет:
п 2 видимо >P это лишнее? P+Q>S так должно быть?

Нет. Может быть так, что сумма радиусов больше расстояния между центрами, но расстояние между центрами меньше большего радиуса. Это будет означать пункт 3.2 (в обоих случаях два пересечения, но в первом случае окружности пересекаются извне, во втором - центры окружностей лежат друг в друге (центры в окружностях, разумеется))



Понял. Спасибо.
(Добавление)
Вообщем сделал так

но почему-то ругается, хотя эта функция используется и 29-30 строках
Цитата:
Fatal error: Call to undefined function GetDistance() in Z:\home\site.local\www\index.php on line 31


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class circle {
  3.  
  4. public $x;
  5. public $y;
  6. public $r;
  7.  
  8. public function __construct($x, $y, $r) {
  9. $this->x = $x;
  10. $this->y = $y;
  11. $this->r = $r;
  12. }
  13.  
  14.  
  15. public function GetDistance($circle) {
  16.  
  17. return sqrt($this->getPow2($circle));
  18.  
  19. }
  20.  
  21. private function getPow2($circle) {
  22.  
  23. return pow(($this->x - $circle->x), 2) + pow(($this->x - $circle->y),2);
  24.  
  25. }
  26.  
  27. public function circle_2($circle) {
  28.  
  29. if (($this->r + $circle->r) < $this->GetDistance($circle_1)) return "false";
  30. if (($this->r + $circle->r) == $this->GetDistance($circle_1)) return "true";
  31. if (($this->r + $circle->r) > $this->GetDistance($circle_1) and GetDistance($circle_1) < $this->r) return "true";
  32. if (($this->GetDistance($circle_1) + $circle->r) == $this->r and $this->r > $this->GetDistance($circle_1)) return "true";
  33. if (($this->GetDistance($circle_1) + $circle->r) < $this->r and $this->r > $this->GetDistance($circle_1)) return "false";
  34. if (($this->GetDistance($circle_1) + $circle->r) > $this->r and $this->r > $this->GetDistance($circle_1)) return "true";
  35. if ($this->r == $circle->r and $this->GetDistance($circle_1) == 0) return "true";
  36. }
  37.  
  38.  
  39. public function __toString() {
  40.         return "Окружность с центром в (".$this->x.";".$this->y.") и радиусом ".$this->r.".";
  41. }
  42.  
  43. public function getX() {
  44. return $this->x;
  45. }
  46.  
  47. public function getY() {
  48. return $this->y;
  49. }
  50.  
  51. public function getR() {
  52. return $this->r;
  53. }
  54.  
  55. public function setX($x) {
  56. $this->x = $x;
  57. }
  58.  
  59. public function setY($y) {
  60. $this->y = $y;
  61. }
  62.  
  63. public function setR($r) {
  64. $this->r = $r;
  65. }
  66. }
  67.  
  68. $circle = new circle(5, 10, 35);
  69. echo $circle."<br />";
  70. echo $circle->x."<br />";
  71. echo $circle->y."<br />";
  72. echo $circle->r."<br />";
  73.  
  74.  
  75. $circle_1 = new circle(7, 50, 17);
  76. echo $circle->circle_2($circle_1);
  77.  
  78. ?>
lawer85 Отправлено: 01 Июля, 2013 - 19:02:18 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
caballero пишет:
геометрия кстати Евклидова али Лобачевского? Улыбка



Эх а когда то у меня по геометрии 5 было, а теперь почти все забыл. Огорчение
(Добавление)
EuGen пишет:
Пусть радиусы окружностей равны P и Q, P>=Q, а расстояние между их центрами равно S
Тогда:
0. P+Q<S - нет пересечений (обе окружности лежат снаружи друг друга)
1. P+Q=S - пересечение ровно в одной точке (касаются друг друга снаружи)
2. P+Q>S>P - пересечение ровно в двух точках
3.0 P>S - если S+Q=P, то пересечение ровно в одной точке (вложенные, касаются друг друга изнутри)
3.1 P>S - если S+Q<P, то нет пересечений (окружности вложены одна в другую)
3.2 P>S - если S+Q>P, то пересечение в двух точках (окружности имеют центры друг в друге, но не вмещаются друг в друга)
4. P=Q, S=0 - бесконечное множество пересечений (окружности совпадают)
Мелкий пишет:
Найти расстояние между центрами окружностей, если оно меньше радиуса любой из окружностей - они пересекаются.

- неверно (см. пункт 3.1)


п 2 видимо >P это лишнее? P+Q>S так должно быть?
lawer85 Отправлено: 01 Июля, 2013 - 18:53:44 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
Мелкий пишет:
Какие данные есть?
Найти расстояние между центрами окружностей, если оно меньше радиуса любой из окружностей - они пересекаются.



Известны координаты центров и радиусы обеих окружностей
(Добавление)
Спасибо всем!

Буду писать код
lawer85 Отправлено: 01 Июля, 2013 - 18:40:01 • Тема: Пересечение окружностей • Форум: Вопросы новичков

Ответов: 18
Просмотров: 728
Помогите составить алгоритм, который проверяет пересекаются ли окружности или нет. Можно даже не в виде кода а на словах, а в код постараюсь сам перевести.
lawer85 Отправлено: 26 Апреля, 2013 - 16:33:50 • Тема: Передача данных в текстовое поле • Форум: Вопросы новичков

Ответов: 3
Просмотров: 109
Не большая поправка, input не парный тег
lawer85 Отправлено: 26 Апреля, 2013 - 14:35:03 • Тема: Изменение размера текста ссылок на странице в зависимости от перехода по соотв ссылке • Форум: Вопросы новичков

Ответов: 0
Просмотров: 69
Надо было сделать так, установить размер текста ссылок в зависимости от перехода по конкретной ссылке, используя куки

Вот что я сделал, работает, но может есть более простой и изящный способ

Код главной

PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.        
  5. <title>Заголовок</title>
  6. <style type="text/css">
  7. a {
  8. <?PHP
  9. echo "font-size: ".$_COOKIE["font"];
  10. ?>
  11. }
  12. </style>
  13. </head>
  14. <body>
  15.  
  16. <p><a href="/page.php">Крупный шрифт</a></p>
  17. <p><a href="/page2.php">Средний шрифт</a></p>
  18. <p><a href="/page3.php">Маленький шрифт</a></p>
  19. </body>
  20. </html>


2 страница

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_SERVER['HTTP_REFERER'] == "http://".$_SERVER['SERVER_NAME']."/") setcookie("font", "40px");
  3. ?>


3 страница

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_SERVER['HTTP_REFERER'] == "http://".$_SERVER['SERVER_NAME']."/") setcookie("font", "20px");
  3. ?>


4 страница

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_SERVER['HTTP_REFERER'] == "http://".$_SERVER['SERVER_NAME']."/") setcookie("font", "10px");
  3. ?>
lawer85 Отправлено: 14 Апреля, 2013 - 23:40:27 • Тема: Услышать мнение правильно ли сделал код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 713
_Dark_ пишет:
В затруднении
Это какой у вас учебный курс где столько внимания уделяется «редиректам»?



Курс Михаила Русакова
lawer85 Отправлено: 14 Апреля, 2013 - 00:11:58 • Тема: Услышать мнение правильно ли сделал код • Форум: Вопросы новичков

Ответов: 20
Просмотров: 713
_Dark_ пишет:
Суть кода где?
Для чего именно так складывать два числа?


Это упражнения из уч курса. Тема редиректа.
lawer85 Отправлено: 13 Апреля, 2013 - 22:14:50 • Тема: Обновление форума. Баги и ошибки пишем здесь • Форум: Колонка администратора

Ответов: 468
Просмотров: 201039
Вот что я заметил. Смотрите на фото

Страниц (13): В начало « ... 5 6 7 8 9 [10] 11 12 13 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB