Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dzielenie kodu na części, Szukam sposobu na większą elastyczność
Dual Jack
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 9.08.2010

Ostrzeżenie: (0%)
-----


Witam!
Pracuję w PHP od ponad roku i dopiero niedawno ujrzałem potrzebę dzielenia kodu na części, aby był bardziej zrozumiały.

Mój problem polega na tym, że potrzebuję wykorzystywać bardzo duże partie kodu PHP w layoucie strony, wykonanej w HTML.

Moja witryna składa się z ogromnych ilości plików( każdy plik jest osobną aplikacją do czegoś), tak jak blog jest właśnie includowany do istniejącej strony.

Kawałek pliku blog.php:

  1. <table cellspacing="0" class="blog-notepad">
  2. <tr>
  3. <td class="blog-notepad-left">
  4.  
  5. </td>
  6. <td class="blog-notepad-middle">
  7.  
  8. <?php blog_entry();?>
  9.  
  10. </td>
  11. <td class="blog-notepad-right">
  12.  
  13. <?php blog_panel();?>
  14.  
  15. </td>
  16. </tr>
  17. <tr>
  18. <td class="blog-notepad-bottom-1">
  19.  
  20. </td>
  21. <td class="blog-notepad-bottom-2">
  22.  
  23. <?php blog_navi();?>
  24.  
  25. </td>
  26. <td class="blog-notepad-bottom-3">
  27.  
  28. </td>
  29. </tr>
  30.  
  31. .... reszta kodu PHP
  32.  



Jak widać, layout jest zbudowany z tabelki, a w poszczególne komórki wstawiam funkcje, które są napisane poniżej tabelki.

Problem w tym, że funkcje są mało relatywne z sobą... Wykonują tylko jakąś czynność, a nie mogą ze sobą współgrać.




Pytanie:

W jaki sposób mógłbym zawrzeć kod PHP w bloku i wywoływać go w określonym miejscu, tak, aby wszystkie zmienne ze sobą współgrały.

Innymi słowy chodzi mi o coś, w stylu "include", ale nie z pliku, tylko z tej samej partii kodu.



-- kod 1 --
blah blah blach... duuużo kodu
-- / kod 1 --



Jakiś HTML >

-- wstaw kod 1 --

Jakiś HTML >
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Dual Jack
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 9.08.2010

Ostrzeżenie: (0%)
-----


Dobra, widzę, że chyba się nie zrozumieliśmy (IMG:style_emoticons/default/wink.gif)

Nie mam zamiaru uczyć się na nowo PHP.


Napisałem taki oto system bloga:

  1. <div class="major-container rounded-5px" style="width:590px; float:left;">
  2.  
  3. <?php
  4.  
  5. require_once('elements/functions/month_id_to_name.php'); // Id miesiąca do nazwy
  6.  
  7. if(!isset($_GET['p']) && !isset($_GET['c'])) { // ####################
  8.  
  9. // Znajduje najświeższy rok i id miesiąca w którym dodano jakiś post na blog'u
  10. $query = "SELECT MAX(entry_month_id), entry_year FROM blog WHERE
  11. entry_year IN (SELECT MAX(entry_year) FROM blog) ";
  12. $result = mysql_query($query) or die(mysql_error());
  13. $row = mysql_fetch_array($result);
  14.  
  15. // jeśli nie jest określony miesiąc i rok (w adresie) w których
  16. // dodano najświeższy post na blogu, określ domyślne za pomocą zmiennych
  17. // wynikowych z funkcji powyżej.
  18. if(!isset($_GET['month']) or !isset($_GET['year']))
  19. { $month = $row[0];
  20. $year = $row[entry_year];
  21. // jeśli zmienne są w adresie
  22. ;} else {
  23. $month = $_GET['month']; # zmienna z adresu
  24. $year = $_GET['year']; # zmienna z adresu
  25. }
  26.  
  27. // Pobierz dane z tabeli
  28. $query = "SELECT * FROM blog WHERE entry_month_id = '".$month."' AND entry_year = '".$year."' ORDER BY entry_day DESC, entry_id DESC";
  29. // Wykonaj $query
  30. $results = mysql_query($query) or die(mysql_error());
  31.  
  32.  
  33. // Wykonaj pętlę dla wszystkich znalezionych wierszy
  34. // ( Stwórz jeden obiekt notatki z dnia )
  35. while($row = mysql_fetch_array($results)) {
  36. extract($row); // Wydziubdziaj mi tu zmienne z bazy danych (IMG:style_emoticons/default/biggrin.gif)
  37. $entry_month = m($month); // Nazwa miesiąca
  38.  
  39. // Pobierz info o kategorii
  40. $result = mysql_query("SELECT cat_title , cat_color FROM categories WHERE cat_id = $entry_cat ");
  41.  
  42. // Wykonaj post wpis dla każdego wiersza z tabeli
  43. echo <<<ENTRY
  44. <div style="position:relative;">
  45. <div $admin_yes id="blog_post_edit" class="rounded-5px">
  46. <a href="?id=blog_post_remove&menu=small&ent_id=$entry_id">usuń</a>
  47. /
  48. <a href="?id=blog_post_update&menu=small&ent_id=$entry_id">edytuj</a>
  49. </div>
  50.  
  51. ... i tak dalej ....
  52.  
  53. </div>





A teraz stwierdziłem, że wygodniej pracowałoby mi się, gdybym miał poszczególne partie kodu PHP w osobnych sekcjach, ale już nie w plikach, ponieważ mam ich za dużo.


Staram się przerobić mój kod na coś w stylu:

  1. <table cellspacing="0" class="blog-notepad">
  2. <tr>
  3. <td class="blog-notepad-left">
  4.  
  5. </td>
  6. <td class="blog-notepad-middle">
  7.  
  8. <?php blog_entry();?>
  9.  
  10. </td>
  11. <td class="blog-notepad-right">
  12.  
  13. <?php blog_panel();?>
  14.  
  15. </td>
  16. </tr>
  17. <tr>
  18. <td class="blog-notepad-bottom-1">
  19.  
  20. </td>
  21. <td class="blog-notepad-bottom-2">
  22.  
  23. <?php blog_navi();?>
  24.  
  25. </td>
  26. <td class="blog-notepad-bottom-3">
  27.  
  28. </td>
  29. </tr>
  30. </table>
  31.  
  32.  
  33. <?php
  34.  
  35. function blog_entry(){
  36.  
  37. global $admin_yes, $admin_no, $a_y, $a_n; // bierz zmienne z poza funkcji
  38.  
  39. // Znajduje najświeższy rok i id miesiąca w którym dodano jakiś post na blog'u
  40. $query = "SELECT MAX(entry_month_id), entry_year FROM blog WHERE
  41. entry_year IN (SELECT MAX(entry_year) FROM blog) ";
  42. $result = mysql_query($query) or die(mysql_error());
  43. $row = mysql_fetch_array($result);
  44.  
  45. // jeśli nie jest określony miesiąc i rok (w adresie) w których
  46. // dodano najświeższy post na blogu, określ domyślne za pomocą zmiennych
  47. // wynikowych z funkcji powyżej.
  48. if(!isset($_GET['month']) or !isset($_GET['year']))
  49. {
  50. $month = $row[0];
  51. $year = $row[entry_year];
  52. // jeśli zmienne są w adresie
  53. }
  54. else
  55. {
  56. $month = $_GET['month']; # zmienna z adresu
  57. $year = $_GET['year']; # zmienna z adresu
  58. }
  59.  
  60. if(isset($_GET['p'])) // Rodzaj pobierania danych ( cały miesiąc, czy tylko jeden post )
  61. {
  62. // Pobierz dane z tabeli
  63. $query = "SELECT * FROM blog WHERE entry_id = '".$_GET['p']."' ";
  64. // Wykonuj $query
  65. $results = mysql_query($query) or die(mysql_error());
  66. }
  67. else
  68. {
  69. // Pobierz dane z tabeli
  70. $query = "SELECT * FROM blog WHERE entry_month_id = '".$month."' AND entry_year = '".$year."' ORDER BY entry_day DESC, entry_id DESC";
  71. // Wykonaj $query
  72. $results = mysql_query($query) or die(mysql_error());
  73. }
  74.  
  75.  
  76. // Wykonaj pętlę dla wszystkich znalezionych wierszy
  77. // ( Stwórz jeden obiekt notatki z dnia )
  78. while($row = mysql_fetch_array($results)) {
  79. extract($row); // Wydziubdziaj mi tu zmienne z bazy danych (IMG:style_emoticons/default/biggrin.gif)
  80. $entry_month = m($entry_month_id); // Nazwa miesiąca
  81.  
  82. // Pobierz info o kategorii
  83. $result = mysql_query("SELECT cat_title , cat_color FROM categories WHERE cat_id = $entry_cat ");
  84.  
  85.  
  86. echo <<<EBC
  87. <div class="blog-notepad-entry">
  88. <div class="header">
  89. <div class="day rounded-5px">
  90. <span style="font-size:12px;font-weight:bold">
  91. $entry_day
  92. </span>
  93. <span style="font-size:12px">
  94. $entry_month
  95. </span>
  96. <span style="font-size:12px">
  97. $entry_year
  98. </span>
  99. </div>
  100.  
  101. <div class="category">
  102. kategoria:
  103. <img src="elements/images/cat.png" width="10" height="10" style="background-color:$cat_color;dislay:inline;">
  104. <a href="?c=$entry_cat" style="color:black;">$cat_title</a>
  105. </div>
  106.  
  107. ..... i tak dalej .....
  108.  
  109. ?>
  110.  




Tylko, że tworząc funkcje, tworzone w nich zmienne nie wychodzą an zewnątrz, a nie chcę się bawić w "return" i ładowanie zwróconych argumentów do kolejnych funkcji ( function zjedz_ciastko(jeden,dwa,trzy){} ).

Potrzebuję ładnego rozwiązania do umieszczania kodu w obiektach i ładowanie ich w dane miejsce.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 15:44