<commit_before><?php

    /**
     *  AnonymFramework Facade Desing Pattern
     *
     * @package Anonym\Patterns
     * @author vahitserifsaglam1 <<EMAIL>>
     */

    namespace Anonym\Patterns;

    use Exception;

    class Facade
    {

        public static $instance = [];

        /**
         * @return mixed
         *  Classı almak için kullanılan method
         */
        protected static function getFacedeRoot()
        {

            if ($root = static::resolveFacede()) {
                return $root;
            }
        }

        /**
         * @return mixed
         * @throws \Exception
         *   Sınıfı Kontrol eder
         */
        protected static function resolveFacede()
        {

            return static::resolveFacedeClassName(static::getFacadeClass());
        }

        /**
         * @throws \Exception
         *  Alt sınıflarda sınıfın ismini döndürmesi için kullanılır
         */
        protected static function getFacadeClass()
        {

            throw new Exception("Facede kendi kendini cagiramaz");
        }

        /**
         * @param $name
         *  Sınıfın olup olmadığını kontrol ediyor
         */
        protected static function resolveFacedeClassName($name)
        {

            if (is_object($name)) {
                return $name;
            }

            if (isset(static::$instance[$name])) {
                return static::$instance[$name];
            } else {
                return $name;
            }
        }


        /**
         * @param $method
         * @param $parametres
         * @return mixed
         *  Dönen sınıfdan istediğimiz methodu static olarak çağırmaya yarar
         */
        public static function __callStatic($method, $parametres)
        {
            $instanceName = static::getFacedeRoot();
            if (!is_object($instanceName)) {

                $instance = Singleton::make($instanceName);
                static::$instance[$instanceName] = $instance;
            } else {

                $instance = $instanceName;
            }


            return call_user_func_array([$instance, $method], $parametres);
        }
    }<commit_msg>added dynamic method  support to facedes<commit_after><?php

    /**
     *  AnonymFramework Facade Desing Pattern
     *
     * @package Anonym\Patterns
     * @author vahitserifsaglam1 <<EMAIL>>
     */

    namespace Anonym\Patterns;

    use Exception;

    class Facade
    {

        public static $instance = [];

        /**
         * @return mixed
         *  Classı almak için kullanılan method
         */
        protected static function getFacedeRoot()
        {

            if ($root = static::resolveFacede()) {
                return $root;
            }
        }

        /**
         * @return mixed
         * @throws \Exception
         *   Sınıfı Kontrol eder
         */
        protected static function resolveFacede()
        {

            return static::resolveFacedeClassName(static::getFacadeClass());
        }

        /**
         * @throws \Exception
         *  Alt sınıflarda sınıfın ismini döndürmesi için kullanılır
         */
        protected static function getFacadeClass()
        {

            throw new Exception("Facede kendi kendini cagiramaz");
        }

        /**
         * @param $name
         *  Sınıfın olup olmadığını kontrol ediyor
         */
        protected static function resolveFacedeClassName($name)
        {

            if (is_object($name)) {
                return $name;
            } elseif (is_string($name) && !isset(static::$instance[$name])) {
                $instance = new $name();
                static::$instance[$name] = $instance;
            }

            if (isset(static::$instance[$name])) {
                return static::$instance[$name];
            } else {
                return $name;
            }
        }


        /**
         * Dönen sınıfdan istediğimiz methodu static olarak çağırmaya yarar
         *
         * @param $method
         * @param $parametres
         * @return mixed
         */
        public static function __callStatic($method, $parametres)
        {
            return call_user_func_array([static::getFacedeRoot(), $method], $parametres);
        }

        /**
         * Facade sınıflarda dinamik çağrımı destekler
         *
         * @param $method
         * @param $parametres
         * @return mixed
         */

        public function __call($method, $parametres)
        {
            return call_user_func_array([static::getFacedeRoot(), $method], $parametres);
        }
    }
{'fraction_non_alphanumeric': 0.0998256320836966, 'fraction_numerical': 0.00043591979075850045, 'mean_word_length': 1.4778617710583153, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7577236', 'n_tokens_mistral': 1345, 'n_tokens_neox': 1266, 'n_words': 267}