הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בניתי מחלקה, הצעות לשיפור (https://hosts.co.il/forums/showthread.php?t=84723)

Ben21 04-09-10 12:12

בניתי מחלקה, הצעות לשיפור
 
PHP קוד:

<?php
class mysql
{
    var 
$connect_id,$db;
    var 
$host,$user,$pass,$dbname;
    function 
db_login($host$user$pass$dbname)
    {
        
$this->connect_id mysql_connect($host$user$pass)or die(mysql_error());
        
$this->db mysql_select_db($dbname$this->connect_id)or die(mysql_error());
    }
}

class 
galery
{
    
//Function For Add New Album
    
var $user$name$description$main_img;
    function 
add_album($user$name$description$main_img)
    {
        global 
$db;
        
$name $_POST["name"];
        
$user $_POST["user"];
        
$description $_POST["description"];
        
$main_img $_POST["main_img"];
        if(empty(
$user) || empty($name) || empty($description) || empty($main_img))
        {
            echo 
"Error";
        }
        else
        {
            echo 
"Good";
            
mysql_query("INSERT INTO `albums` (`user`, `name`, `description`, `main_img`) VALUES
            ('"
.$user."', '".$user."', '".$description."', '".$main_img."')") or die(mysql_error());
        }
    }
    
    
//Function For Delete Images In Albums
    
var $from$delete$delete_id;
    function 
delete_from($from$delete$delete_id)
    {
        global 
$db;
        
$delete $_POST["del"];
        
$delete_id implode(",",$delete);
        if(empty(
$delete_id) || empty($from))
        {
            echo 
"Error";
        }
        else
        {
            echo 
"Good";
            
mysql_query("DELETE FROM `".$from."` WHERE `id` IN (".$delete_id.")") or die(mysql_error());
        }
    }
}
$db = new mysql();
$db->db_login("localhost""root""""cms");
$g = new galery();
?>

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

שאלה שנייה:
האם המחלקה יעילה?
אני מתכנן לפתח CMS ענקית ע"י שימוש בOOP

תודה רבה על שיתוף הפעולה, ושבת שלום!

AlmogBaku 04-09-10 22:58

אני מציע מראש לשקול שימוש ב ActiveRecord..

Daniel 04-09-10 23:22

אני מציע שתסתכל במחלקות MySQL וללמוד מהם.

אין צורך להגדיר " var $host,$user,$pass,$dbname;" ודומיהם.

ובהמשך להערה האחרונה - תסתכל על הקוד שלך..
PHP קוד:

    var $user$name$description$main_img;
    function 
add_album($user$name$description$main_img)
    {
        global 
$db;
        
$name $_POST["name"];
        
$user $_POST["user"];
        
$description $_POST["description"];
        
$main_img $_POST["main_img"]; 

אתה מצד אחד הגדרתי properties של המחלקה (ואתה לא משתמש בהם - ז"א $this->name),
אחר כך אתה מגדיר שלפונקציה קוראים עם נתונים מסויימים - אבל אתה אחר כך מגדיר אותם מחדש.


אם יש לך מחלקה למסד הנתונים - שתכיל בתוכה גם פונקציה שתטפל בשאילתאות.

גלריה כותבים עם 2 L - ז"א gallery.

אם אתה מעוניין להתחיל ליישם את עקרונות התכנות מונחה עצמים, אני שוב פעם - ממליץ להסתכל על מחלקות קיימות.

אם יש לך פונקציה שמטפלת במחיקה לדוגמא של תמונה גלריה - היא לא תציג את המידע. היא רק אמורה להחזיר TRUE/FALSE (אם היא הצליחה או לא).
אתה צריך גם להסתכל כאן על עקרונות של אבטחת מידע - ז"א לבצע escaping של המידע שנכנס למסד...


אני חושב שלפני שתתחיל בלתכנת מערכת גדולה כדאי שתקרא מחדש את הדפים ב-PHP.NET שמסבירים על פונקציות ועל OOP. יש דף מעולה שמסביר על פונקציות ב-PHP.NET: http://www.w3schools.com/PHP/php_functions.asp


בהצלחה!

astricks 05-09-10 13:29

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

Hagaibl 05-09-10 17:52

ציטוט:

נכתב במקור על ידי MasterT (פרסם 777756)
אני מציע שתסתכל במחלקות MySQL וללמוד מהם.

אין צורך להגדיר " var $host,$user,$pass,$dbname;" ודומיהם.

ובהמשך להערה האחרונה - תסתכל על הקוד שלך..
PHP קוד:

    var $user$name$description$main_img;
    function 
add_album($user$name$description$main_img)
    {
        global 
$db;
        
$name $_POST["name"];
        
$user $_POST["user"];
        
$description $_POST["description"];
        
$main_img $_POST["main_img"]; 

אתה מצד אחד הגדרתי properties של המחלקה (ואתה לא משתמש בהם - ז"א $this->name),
אחר כך אתה מגדיר שלפונקציה קוראים עם נתונים מסויימים - אבל אתה אחר כך מגדיר אותם מחדש.


אם יש לך מחלקה למסד הנתונים - שתכיל בתוכה גם פונקציה שתטפל בשאילתאות.

גלריה כותבים עם 2 L - ז"א gallery.

אם אתה מעוניין להתחיל ליישם את עקרונות התכנות מונחה עצמים, אני שוב פעם - ממליץ להסתכל על מחלקות קיימות.

אם יש לך פונקציה שמטפלת במחיקה לדוגמא של תמונה גלריה - היא לא תציג את המידע. היא רק אמורה להחזיר TRUE/FALSE (אם היא הצליחה או לא).
אתה צריך גם להסתכל כאן על עקרונות של אבטחת מידע - ז"א לבצע escaping של המידע שנכנס למסד...


אני חושב שלפני שתתחיל בלתכנת מערכת גדולה כדאי שתקרא מחדש את הדפים ב-PHP.NET שמסבירים על פונקציות ועל OOP. יש דף מעולה שמסביר על פונקציות ב-PHP.NET: http://www.w3schools.com/PHP/php_functions.asp


בהצלחה!

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


כל הזמנים הם GMT +2. הזמן כעת הוא 22:33.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ