לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 05-07-2009, 16:23
  Sagilevi Sagilevi אינו מחובר  
 
חבר מתאריך: 07.10.04
הודעות: 1,277
בתגובה להודעה מספר 1 שנכתבה על ידי Xpein שמתחילה ב "בעיה בעשיית מחלקה"

לא עברתי על כל הקוד והאלגוריתם שלו. הבעיה שלך היא שאתה מנסה
לגשת לתכונה שלא הגדרת אותה. למה זה קרה? כי ניסית לגשת לתכונה $cols
כלומר לתכונה שהיא מספר מסוים (תלוי בערך המשתנה). אתה בטח רוצה
לגשת לתכונה cols. לכן, במקום
קוד PHP:
 $this->$cols 

תכתוב:
קוד PHP:
 $this->cols 


בנוגע לשאר הקוד, בקצרה:
1. את כל האתחולים אתה שם ב-constructor. אתה עשית אתחול מחוץ לבנאי,
ששם בנית שני מערכים ריקים. זה אפשרי, אבל זה מיותר במקרה הזה.
בבנאי אתה שם במילא ערך בתכונה headers (מערך).
2. ב-php5 הבנאי נכתב כך: __construct ולא כשם המחלקה.
ב-php 5 לא מגדירים תכונות בעזרת var. אלא בעזרת הרשאות גישה.

עצה שלי: אני לא יודע לגבי איכות הספר. אבל תכנות מונחה עצמים כדאי ללמוד
ללא קשר ל-php, או ללמוד על php 5. הספר שלך מלמד ב-php 4 וזה לא תקף יותר.
אתה יכול ללמוד באתר הרשמי: PHP 5 OOP. אבל זה לא מלמד את העקרונות,
אלא יותר מסביר איך משתמשים בדברים ב-php. תצטרך ללמוד ממקום אחר.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 05-07-2009, 18:35
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
בתגובה להודעה מספר 2 שנכתבה על ידי Sagilevi שמתחילה ב "לא עברתי על כל הקוד..."

אוקי תודה,
הספר אכן של PHP4,יש הבדלים משמעותיים?
כי הספר מסביר מאוד מובן..

בכל אופן,הבנתי את השגיאה שעשיתי בלי לשים לב ובגלל זה ערכתי את האשכול לפני כן,תודה על התגובה שלך.

תודה על ההבהרה לגבי הקוד,
הבנתי את הערה לגבי הקונסטרקטור, אבל לא הבנתי מה הכוונה שמגדירים את
המאפיינים בעזרת הרשאות,אפשר דוגמא?

כמו כן הייתה לי שאלה ועדיף לא לפתוח עליה אשכול נוסף:
איך אני יכול לשלוף את כל השמות של השדות מטבלת נתונים כלשהי(וזאת כדי לשים את זה
במערך שבו אני אשתמש במחלקה שהצגתי).כלומר, אם אני רוצה להדפיס טבלת נתונים בשלמותה
מבלי לדעת על השמות של השדות אבל לדעת על השם של הטבלה,איך אני יכול לשלוף
את השמות של השדות ולשים אותם במערך?

שוב תודה.
_____________________________________
--- ! Area Close ! ---

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 05-07-2009, 19:01
  Sagilevi Sagilevi אינו מחובר  
 
חבר מתאריך: 07.10.04
הודעות: 1,277
בתגובה להודעה מספר 3 שנכתבה על ידי Xpein שמתחילה ב "אוקי תודה, הספר אכן של..."

1. הבדלים משמעותיים ב-OOP יש. בשאר הנושאים אני לא חושב
שיש הבדלים משמעותיים בלמידה עצמה. בטח לא משהו שאי אפשר
להשלים לבד אחר כך. אני מציע שתלמד באתר PHP Israel (עברית).
2. הרשאות גישה (access modifiers) מאפשרות לממש את עקרון
ההכמסה (Encapsulation). אתה מגדיר לגבי כל תכונה ושיטה
מאיפה ניתן לגשת אליה: public - מכל מקום, private - מתוך המחלקה בלבד,
protected - מתוך המחלקה ומתוך המחלקות היורשות ממנה.
לרוב תרצה להגדיר את התכונות כפרטיות (private) ואת השיטות
אתה תגדיר כציבוריות (public), למעט שיטות עזר.
הסבר על התחביר: PHP Visibility (האתר הרשמי, אנגלית).
דוגמה: במקום var $array תרשום private $array
3. ב-MySQL אתה יכול להשתמש ב-describe.
לדוגמה:
קוד PHP:
 DESCRIBE `table_name

מידע נוסף בקישור. שים לב שאתה צריך רק את העמודה Field.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 05-07-2009, 19:37
  Xpein Xpein אינו מחובר  
 
חבר מתאריך: 21.01.06
הודעות: 813
בתגובה להודעה מספר 4 שנכתבה על ידי Sagilevi שמתחילה ב "1. הבדלים משמעותיים ב-OOP יש...."

אחלה תודה על העזרה.
רק בקשר לתשובה 2-
ציטוט:
ואת השיטות
אתה תגדיר כציבוריות (public), למעט שיטות עזר.

גם שיטות צריך להגדיר אחרת? כלומר את הפונקציות,צריכה לבוא המילה public או הגדרת
אבטחה אחרת לפני המילה function בתוך המחלקה?(וגם בלי מחלקה?)

סיימתי לבנות את המחלקה הראשונה כרגע אל תתיחס לעניין של הPHP4,זה נראה ככה,דף function.php:
קוד PHP:
<?php
function con_db()
{
    
$connection mysql_connect ('localhost' '' '')
    or die (
"EROR: Couln't connect to mysql server");
    
mysql_select_db ('test') or die ("EROR: Couldn't open datebase");
}

class 
Table 
{
    var 
$table_array = array();
    var 
$headers = array();
    var 
$cols;
    function 
Table($headers)
    {
        
$this->headers $headers;
        
$this->cols count($headers);
    }
    function 
addRow($row
    {
        if (
$this->cols != count($row))
            return 
false;
        
array_push ($this->table_array,$row);
            return 
true;
    }    

}

class 
HTMLTable extends Table 
{
    var 
$bgcolor;
    var 
$cellpadding "2";
    var 
$css_style;
    
    function 
HTMLTable ($headers,$bg="#ffffff",$padding="4",$style)
    {
    
Table::Table($headers);
    
$this->bgcolor $bg;
    
$this->cellpadding $padding;
    
$this->css_style $style;
    }
    
    
    function 
output()
    {
        echo 
'<Table cellpadding='.$this->cellpadding.' style="'.$this->css_style.'"><tr>';
        foreach (
$this->headers as $header)
            echo 
'<td style="'.$this->css_style.'" bgcolor='.$this->bgcolor.'><b>'.$header.'</b></td>';
        echo 
'</tr>';
        foreach (
$this->table_array as $row=>$cells
        {
            echo 
'<tr>';
            foreach (
$cells as $cell
                echo 
'<td style="'.$this->css_style.'" bgcolor='.$this->bgcolor.'>'$cell .'</td>';
            echo 
'</tr>';
        }
        echo 
'</table>';
        
    }
}

?>



והדף index.php המשתמש בה:
קוד PHP:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<
head>

  <
title>User List</title>
  <
meta http-equiv="content-language" content="he" />
  <
meta http-equiv="content-type" content="text/html; charset=utf-8" />

</
head>
<
body>
<?
php
require ("functions.php");
con_db();

$headers = array ("nick","password","name","age","phone");
$cellpadding "7";
$bgcolor="#D0DCE0";
$css_style "border: 1px solid black; font-size: 10pt; text-align: center;";
$table = new HTMLTable $headers ,$bgcolor,$cellpadding,$css_style);
$q mysql_query ("SELECT * FROM user_list ORDER by `ID` DESC");
while (
$det mysql_fetch_array ($q))
    
$table->addRow ( array ($det['nick'],$det['password'],$det['name'],$det['age'],$det['phone']) );
$table->output();
?>
</body>
</html> 


----------------------------------------------------------------------

עשיתי בעצם דבר כזה: לקחתי את השמות של השדות מהטבלת נתונים,והשתמשתי במחלקה
כדי להדפיס את זה טבלה.

----------------------------------------------------------------------
השאלות שלי הן כאלה:
1. עד כמה ייעלתי את הדברים,כלומר עשיתי כמו שצריך לעשות או שיש איזה משהו שכנראה
לא הפנמתי כמו שצריך?

2. האם ככה משתמשים במונחה עצמים,כלומר יוצרים מחלקות ואת המאפיינים שלהם משנים
בכל דף בנפרד(כמו שאני למשל שיניתי מאפיניים באינקס)?

3. כדי לתפוס כמו שצריך את העניין של המונחה עצמים,אפשר בבקשה קומץ דברים שאיתם משתמשים במחלקות ובמונחה עצמים? למשל תכננתי לעשות את העניין עם הטבלה
כדי שפאנל ניהול אני אוכל להדפיס כמה פעמים את הטבלאות נתונים,עם מחלקת אם ומחלקת "צאצא"
וכך לחסוך בקוד.

ושוב תודה רבה !
_____________________________________
--- ! Area Close ! ---

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:18

הדף נוצר ב 0.06 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר