qcubed/framework

View on GitHub
includes/codegen/QReverseReference.class.php

Summary

Maintainability
D
1 day
Test Coverage
<?php
    /**
     * Used by the QCubed Code Generator to describe a column reference from
     * the table's perspective (aka a Foreign Key from the referenced Table's point of view)
     * @package Codegen
     *
     * @property QReference $Reference
     * @property string $KeyName
     * @property string $Table
     * @property string $Column
     * @property boolean $NotNull
     * @property boolean $Unique
     * @property string $VariableName
     * @property string $VariableType
     * @property string $PropertyName
     * @property string $ObjectDescription
     * @property string $ObjectDescriptionPlural
     * @property string $ObjectMemberVariable
     * @property string $ObjectPropertyName
     * @property array $Options
     */
    class QReverseReference extends QBaseClass {

        /////////////////////////////
        // Protected Member Variables
        /////////////////////////////

        /**
         * The peer QReference object for which this object is the reverse reference of
         * @var QReference KeyName
         */
        protected $objReference;

        /**
         * Name of the foreign key object itself, as defined in the database or create script
         * @var string KeyName
         */
        protected $strKeyName;

        /**
         * Name of the referencing table (the table that owns the column that is the foreign key)
         * @var string Table
         */
        protected $strTable;

        /**
         * Name of the referencing column (the column that owns the foreign key)
         * @var string Column
         */
        protected $strColumn;

        /**
         * Specifies whether the referencing column is specified as "NOT NULL"
         * @var bool NotNull
         */
        protected $blnNotNull;

        /**
         * Specifies whether the referencing column is unique
         * @var bool Unique
         */
        protected $blnUnique;

        /**
         * Name of the reverse-referenced object as an function parameter.
         * So if this is a reverse reference to "person" via "report.person_id",
         * the VariableName would be "objReport"
         * @var string VariableName
         */
        protected $strVariableName;

        /**
         * Type of the reverse-referenced object as a class.
         * So if this is a reverse reference to "person" via "report.person_id",
         * the VariableName would be "Report"
         * @var string VariableType
         */
        protected $strVariableType;

        /**
         * Property Name of the referencing column (the column that owns the foreign key)
         * in the associated Class.  So if this is a reverse reference to the "person" table
         * via the table/column "report.owner_person_id", the PropertyName would be "OwnerPersonId"
         * @var string PropertyName
         */
        protected $strPropertyName;

        /**
         * Singular object description used in the function names for the
         * reverse reference.  See documentation for more details.
         * @var string ObjectDescription
         */
        protected $strObjectDescription;

        /**
         * Plural object description used in the function names for the
         * reverse reference.  See documentation for more details.
         * @var string ObjectDescriptionPlural
         */
        protected $strObjectDescriptionPlural;

        /**
         * A member variable name to be used by classes that contain the local member variable
         * for this unique reverse reference.  Only aggregated when blnUnique is true.
         * @var string ObjectMemberVariable
         */
        protected $strObjectMemberVariable;

        /**
         * A property name to be used by classes that contain the property
         * for this unique reverse reference.  Only aggregated when blnUnique is true.
         * @var string ObjectPropertyName
         */
        protected $strObjectPropertyName;

        /**
         * Keyed array of overrides read from the override file
         * @var array Overrides
         */
        protected $options;





        ////////////////////
        // Public Overriders
        ////////////////////

        /**
         * Override method to perform a property "Get"
         * This will get the value of $strName
         *
         * @param string $strName Name of the property to get
         * @throws Exception
         * @throws QCallerException
         * @return mixed
         */
        public function __get($strName) {
            switch ($strName) {
                case 'Reference':
                    return $this->objReference;
                case 'KeyName':
                    return $this->strKeyName;
                case 'Table':
                    return $this->strTable;
                case 'Column':
                    return $this->strColumn;
                case 'NotNull':
                    return $this->blnNotNull;
                case 'Unique':
                    return $this->blnUnique;
                case 'VariableName':
                    return $this->strVariableName;
                case 'VariableType':
                    return $this->strVariableType;
                case 'PropertyName':
                    return $this->strPropertyName;
                case 'ObjectDescription':
                    return $this->strObjectDescription;
                case 'ObjectDescriptionPlural':
                    return $this->strObjectDescriptionPlural;
                case 'ObjectMemberVariable':
                    return $this->strObjectMemberVariable;
                case 'ObjectPropertyName':
                    return $this->strObjectPropertyName;
                case 'Options':
                    return $this->options;

                default:
                    try {
                        return parent::__get($strName);
                    } catch (QCallerException $objExc) {
                        $objExc->IncrementOffset();
                        throw $objExc;
                    }
            }
        }

        /**
         * Override method to perform a property "Set"
         * This will set the property $strName to be $mixValue
         *
         * @param string $strName Name of the property to set
         * @param string $mixValue New value of the property
         * @throws Exception
         * @throws QCallerException
         * @return mixed
         */
        public function __set($strName, $mixValue) {
            try {
                switch ($strName) {
                    case 'Reference':
                        return $this->objReference = QType::Cast($mixValue, 'QReference');
                    case 'KeyName':
                        return $this->strKeyName = QType::Cast($mixValue, QType::String);
                    case 'Table':
                        return $this->strTable = QType::Cast($mixValue, QType::String);
                    case 'Column':
                        return $this->strColumn = QType::Cast($mixValue, QType::String);
                    case 'NotNull':
                        return $this->blnNotNull = QType::Cast($mixValue, QType::Boolean);
                    case 'Unique':
                        return $this->blnUnique = QType::Cast($mixValue, QType::Boolean);
                    case 'VariableName':
                        return $this->strVariableName = QType::Cast($mixValue, QType::String);
                    case 'VariableType':
                        return $this->strVariableType = QType::Cast($mixValue, QType::String);
                    case 'PropertyName':
                        return $this->strPropertyName = QType::Cast($mixValue, QType::String);
                    case 'ObjectDescription':
                        return $this->strObjectDescription = QType::Cast($mixValue, QType::String);
                    case 'ObjectDescriptionPlural':
                        return $this->strObjectDescriptionPlural = QType::Cast($mixValue, QType::String);
                    case 'ObjectMemberVariable':
                        return $this->strObjectMemberVariable = QType::Cast($mixValue, QType::String);
                    case 'ObjectPropertyName':
                        return $this->strObjectPropertyName = QType::Cast($mixValue, QType::String);
                    case 'Options':
                        return $this->options = QType::Cast($mixValue, QType::ArrayType);
                    default:
                        return parent::__set($strName, $mixValue);
                }
            } catch (QCallerException $objExc) {
                $objExc->IncrementOffset();
                throw $objExc;
            }
        }
    }