تاريخ آخرين ويرايش: 21 خرداد 1399

اداره سامانه هاي كاربردي مركز فاوا دانشگاه فردوسي مشهد

اين مستند، جزئي از مستندات فني چگونگي توسعه در بستر فريم ورك سدف (سامانه هاي دانشگاه فردوسي) است.

ساختار جداول در کلیه سدف  از لحاظ نام گذاری نام جداول و فیلدها باید مطابق زیر باشد و درج توضیحات فیلدها نیز الزامی می باشد:

CREATE  TABLE TestTable (

RowID int(11) NOT NULL auto_increment,

SubjectID int(11) NOT NULL comment '‫ کد موضوع از جدولsubjects ',

description varchar(500) collate utf8_persian_ci NOT NULL comment '‫توضیحات',

RegDate date NOT NULL comment 'تاریخ ثبت‫',

PRIMARY KEY (RowID))

 

در ساختار مدل ها موارد زیر باید رعایت شود:

  • All classes should extends of "PdoDataAccess "
  • Data member names must be same as field names
  • Extra data member names should start with unerline ( _ )
  • DMA names should start with (DT_) and followed by field name.

class Book extends PdoDataAccess

{

public $BookID;

public $SubjectID;

public $description;

public $RegDate;

   

public $_SubjectName;

function  __construct($bookId = "")

{

$this->DT_BookID = DataMember::CreateDMA(DataMember::Pattern_Num);

$this->DT_SubjectID = DataMember::CreateDMA(DataMember::Pattern_Num);   

$this->DT_description = DataMember::CreateDMA(DataMember::Pattern_FaEnAlphaNum);   

$this->DT_RegDate = DataMember::CreateDMA(DataMember::Pattern_Date);                  

PdoDataAccess::FillObject($this,

       "select t.*,s.ptitle _SubjectName

       from books join subjects s using(SubjectID)

       where BookID=?", array($bookId));

      

       if(PdoDataAccess::AffectedRows() == 0)

              $this->PushException(“Object Not Found”);

}

کلاس PdoDataAccess برای مدیریت کلیه عملیات مرتبط با بانک اطلاعاتی طراحی شده است.   به صورت پیش فرض تنظیمات اتصال به بانک اطلاعاتی از پارامتر های کلاس sys_config  به شرح زیر بازیابی می شود:

require_once 'config.class.php';

class sys_config{

        public static $db_server = array (

                 "driver"   => "",

                 "host"     => "",

                 "database" => "",

                 "user"     => "",

                 "pass"     => ""

        );

        public static $page_authorize = false;

}

sys_config::$db_server = array (

              "driver" => config::$db_servers['master']["driver"],

              "host" => config::$db_servers['master']["host"],

              "database" => “accountancy”,

              "user" => config::$db_servers['master']["accountancy_user"],

              "pass" => config::$db_servers['master']["accountancy_pass"]

          );

در فایل share/config.class.php کلیه اطلاعات مربوط به یوزر و پسورد های اتصال به دیتابیس قرار دارد که در پروژه خود می توانید آنها را به روش بالا بازیابی کنید. همچنین می توانید با استفاده از تابع زیر و با فرستادن پارامترهای اتصال به بانک اطلاعاتی متصل شوید:

getPdoObject($_host, $_user, $_pass, $_default_db, $ShowException);

انتقال پارامترهای به توابع PdoDataAccess :

  • با استفاده از ‘؟’

$query = ”select * from books where BookID=? AND SubjectID=?”;

PdoDataAccess::runquery($query, array($BookID , $SubjectID ) );

  • آرایه کلید-مقدار

$query = ”select * from books where BookID=:bid”;

PdoDataAccess::runquery($query, array(”:bid” => $_POST[”bookId”]));

اجرای transaction :

$db = parent::getPdoObject();

/*@var $db PDO*/

$db->beginTransaction();

...

parent::runquery($query, $params, $db);

       ...

$db->rollBack(); / $db->commit();

Fill Object functions

  • Boolean FillObjectByArray(object $obj, array $record)
  • Boolean FillObjectByJsonData(object $obj, string $jsonData)
  • Boolean FillObjectByObject(object $sourceObj, object $destinationObj)
  • Boolean FillObject(object $obj, string $query, array $whereParams = array(), PDO $pdoObject = null)

Insert / Update Functions

  • Boolean insert(string $tableName, object $obj, PDO $pdoObject = null)
  • Integer/boolean InsertID(PDO $pdoObject = null)
  • Boolean update(string $tableName, object $obj, string $where = "", array $params = array(), PDO $pdoObject = null)
  • Integer/boolean AffectedRows(PDO $pdoObject = null)
  • Boolean replace(string $tableName, object $obj, PDO $pdoObject = null)
  • integer/boolean GetLastID(string $tableName,string $field,string $where = "",array $whereParams = array(),PDO $pdoObject = null)

 

ExceptionHandler

در کلیه کلاس ها اگر خطای رخ دهد به متغیر exceptions این کلاس اضافه می گردد که می توانید با استفاده از دستورPopAllExceptions لیست خطاهای مربوط به عملیات بانک اطلاعاتی را مشاهده کنید.

  • PushException(string $Description, $exceptionType = ExceptionHandler::ExceptionType_error)
  • ExceptionType_message
  • ExceptionType_warning
  • ExceptionType_error
  • PopException() // array("Desc" => $Description, "Type" => $exceptionType);
  • PopExceptionDescription()
  • PopAllExceptions()
  • GetExceptionCount()
  • GetExceptionsToString($seprator = '\n', $include_errors = true, $include_warnings = true, $include_messages = true)

OperationClass

این کلاس برای ساده سازی عملیات و حذف ایجاد کدهای تکراری در مدل ها پیاده سازی شده است. اگر کلاس شما مطابق استاندارد ایجاد شده نیازی به پیاده سازی توابع پایه ندارید.