استفسار في تقنية OOP في PHP


التعليقات

عليك أن تُفكر كمبرمج وتجد حلول لما تريد لن أكتب كامل الحل حتى تستطيع تطوير مهاراتك فيما بعد هذا كأئن بسيط غير معلومات القاعدة وتأكد من وجود قاعدة البيانات

// معلومات قاعدة البيانات
$database = new Mysqli("localhost","root","passowrd","users");
// ترميز البيانات utf-8
$database->set_charset("utf-8");
// إنشاء جدول المُتسخدمين
$database->query("
    CREATE TABLE `users`(
        u_name varchar(15) NOT NULL,
        u_password varchar(34) NOT NULL
    )CHARACTER SET UTF8
");
class user{

    /**
        * إنشاء مُستخدم جديد *

        @param string userName : إسم المُستخدم
        @param string userPassword : كلمة المرور

        @return : bool 
    */
    static function newUser($userName,$userPassword){
        global $database;
        // حماية المُخلات
        $userName = htmlentities($userName,ENT_QUOTES);
        $userPassword = htmlentities($userPassword,ENT_QUOTES);
        return (bool)($database->query("insert into `users` VALUES ('$userName','$userPassword')"));
    }

    /**
        * تسجيل الدخول *

        @param string userName : إسم المُستخدم
        @param string userPassword : كلمة المرور

        @return : bool 
    **/
    static function login($userName,$userPassword){
        global $database;
        // حماية المُخلات
        $userName = htmlentities($userName,ENT_QUOTES);
        $userPassword = htmlentities($userPassword,ENT_QUOTES);
        return (bool)(($q = $database->query("SELECT u_name from `users` where u_name = '$userName' AND u_password = '$userPassword'")) && $q->num_rows);
    }
}

للتجربة يُمكنك إنشاء مُستخدم هكذا

user::newUser("test","password");

ثم تجربة وجودية المعلومات من خلال الدالة

user::login("test","password");

ستخرج true في حالة الوجودية وfalse إن لم تكن موجودة

أشياء قم بها بنفسك للتتمرن

  • تاكد من المعلومات قبل الادخال حتى لاتتكرر

  • كلمة المرور ستكون معروضة حاول أن تخفيها

  • لايوجد حفظ للمعلومات إبحث عن الجلسات session وحاول تطبيقها

ويمكن إضافة المزيد أتمنى لك التوفيق.

إن كنت لاتفهم آلية العمل فإن الشرح يحتاج درسًا مطولًا إقرأء بعض الدروس لذلك

هذا قد يكون جيد :

وعليكم السلام

عزيزي هيكليه العمل علي oop لا تحتاج عمل كثير او شروحات عديده ولكن فقط معرفه الاساسيات والمنهجيه

الكلاس سيحتوي المتغيرات والدوال ليتكون اوبجكت متكامل

اذا كنت تعرف كيف التعامل مع المتغيرات والدوال لن تجد صعوبه في بناء كلاس وهنا سياتي الفرق بالتعاريف او الخصوصيه

مثلا بوبلك قبل المتغير او الداله تعني ان الاستخدام عام اما اذا برايفت الاستخدام بداخل الكلاس فقط

عذرا علي الرد البسيط لي عوده ان شاءلله في وقت لاحق

اهلاً بك عزيزي وعذراً علي التاخير

الاستدعاء يكون من خلال دوال include

وتقوم بانشاء الاوبجكت الخاص بالكلاس

أخي أريد أن أعرف كيف أستدعي دالة موجودة داخل الكلاس في ملف آخر،

اوضح الاخ @supercoder مشكوراً كيف الاستدعاء .. وساحاول المساهم بذلك .. الشي الذي طبعته انت صحيح في myfunction ساضع لك مثال في الاسفل ولكن اريد اوضح مساله فط عندما يتم اضافه عباره static لا يمكن طلب الداله بعد الانشاء ولكن سيتم الطلب كالتالي Myclass::myfunction() كما شرح الاخ @supercoder .. وعدا ذلك سيتكون "->"

كمثال بسيط

// TestObject.class.php
class TestObject {
    private $name;

    public function __construct() {

    }
    public function getName() {
        return $this->name;
    }

    public function setName($name) {
        $this->name = $name;
    }
}

// test.php
include 'file.class.php';
$object = new TestObject();
$object->setName("Test");

function printTest($obj) {
    print $obj->getName();
}

اتمنى ان التنسيق يساعد علي عرض الكود

ويمكن الاطلاع علي

http://php.net/manual/en/la...

حيث ان namespace ستساهم بتوسيع مفهوم oop الخاص بالمشروع بشكل اشمل

بالتوفيق للجميع ..

عزيزي @walid.khaffou ضع اي سوال دون خجل .. وان شاءلله ساحاول الاجابه