php Ошибка хука spl_object_ha sh () ожидает ровно 1 параметр, 2 дано - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу создавать анонимные функции и добавлять их в ловушку вместо использования определенных функций в ловушках. Ошибка: spl_object_ha sh () ожидает ровно 1 параметр, 2 указан в D: сервер \ www\deneme \ sistem \ kanca. php в строке 313

Ошибка Функция проблемы benzersiz_Filtre_id () spl_object_ha sh Неправильное использование функции: kanca_cek("panel_main",function(){ return "a";}); Обычное использование: kanca_cek("panel_main","db_filter");

<code>function kanca_tak($ad,$fonksiyon,$onem=10,$deger=1){
        return self::filtre_ekle($ad,$fonksiyon,$onem,$deger);
    }
    function kanca_sil($ad,$fonksiyon,$onem=10){
        return self::filtre_sil($ad,$fonksiyon,$onem);
    }
    function tum_kancalari_sil($ad,$onem=false){
        return self::tum_filtreleri_sil($ad,$onem);
    }
    function kanca_sor($ad,$fonksiyon_kontrol=false){
        return self::filtre_sor($ad,$fonksiyon_kontrol);
    }
    function kanca_saydir($ad){
        if(!isset($this->islemSayaci) || !isset($this->islemSayaci[$ad]))
            return 0;
        return $this->islemSayaci[$ad];
    }
    function islemSayaci($ad,$kanca=false){
        $kancaSor=($kanca ? "kanca":"filtre");
        if(isset($this->islemSayaci[$ad][$kancaSor]))
          $this->islemSayaci[$ad][$kancaSor]++;
        else
        $this->islemSayaci[$ad][$kancaSor]=1;
    }
    function kanca_cek($ad,$deger=''){
        $depo = array();
        $uFv=array();
        if (isset($this->filtreler['hepsi'])) {
            $this->guncelFiltre[] = $ad;
            $depo               = func_get_args();
            $this->tum_kancalari_cagir($depo);
        }
        if (!isset($this->filtreler[$ad])) {
            if (isset($this->filtreler['hepsi']))
                array_pop($this->guncelFiltre);
            return;
        }
        if (!isset($this->filtreler['hepsi']))
            $this->guncelFiltre[] = $ad;
        if (is_array($deger) && 1 == count($deger) && isset($deger[0]) && is_object($deger[0])) // array(&$this)
            $depo[] =& $deger[0];
        elseif(!empty($deger))
            $depo[] = $deger;
        for ($a = 2; $a < func_num_args(); $a++)
            $depo[] = func_get_arg($a);

        // Sort
        if (!isset($this->topluFiltreler[$ad])) {
            ksort($this->filtreler[$ad]);
            $this->topluFiltreler[$ad] = true;
        }
        self::islemSayaci($ad,true);
        do {
            foreach ((array) current($this->filtreler[$ad]) as $yaz){
                /**
                *@param $uFv değişkeni call_user_func_array fonksiyonunda kullanıcı tanımlı fonksiyona gönderilecek değerleri içerir
                *@param accepted_args varsa ve gelen değer eğer dizeyse $uFv ile $yaz["accepted_args"] birleştirir $uFv değişkenine atar.
                * @example call_user_func_array gönderilecek değerleri oluşturur.
                */
                    $uFv=array_slice($depo, 0, (int) $yaz['accepted_args']);
                    if(isset($yaz["accepted_args"]) && is_array($yaz["accepted_args"]))
                        $uFv=array_merge($uFv,$yaz["accepted_args"]);
                    if (isset($yaz['fonksiyon']) && !is_null($yaz['fonksiyon']))
                        call_user_func_array($yaz["fonksiyon"], $uFv);
                    //  call_user_func_array($yaz['fonksiyon'], array_slice($depo, 0, (int) $yaz['accepted_args']));
            }


        } while (next($this->filtreler[$ad]) !== false);

        array_pop($this->guncelFiltre);
    }
    function referans_diziyle_kancala($ad,$deger){

        if (isset($this->filtreler['hepsi'])) {
            $this->guncelFiltre[] = $ad;
            $depo               = func_get_args();
            $this->tum_kancalari_cagir($depo);
        }

        if (!isset($this->filtreler[$ad])) {
            if (isset($this->filtreler['hepsi']))
                array_pop($this->guncelFiltre);
            return;
        }

        if (!isset($this->filtreler['hepsi']))
            $this->guncelFiltre[] = $tag;

        // Sort
        if (!isset($this->topluFiltreler[$ad])) {
            ksort($this->filtreler[$ad]);
            $this->topluFiltreler[$ad] = true;
        }

        reset($this->filtreler[$tag]);

        do {
            foreach ((array) current($this->filtreler[$ad]) as $yaz)
                if (isset($yaz['fonksiyon']) && !is_null($yaz['fonksiyon']))
                    call_user_func_array($yaz['fonksiyon'], array_slice($deger, 0, (int) $yaz['accepted_args']));

        } while (next($this->filtreler[$ad]) !== false);

        array_pop($this->guncelFiltre);
    }
    function filtre_ekle($ad,$fonksiyon,$onem,$deger=1,$sadeceKelime=0){
         $fk=($sadeceKelime ? $ad."_".password_hash(rand(0,10000),PASSWORD_DEFAULT):$fonksiyon);
        $cId=self::benzersiz_Filtre_id($ad,$fk,$onem);
        if($sadeceKelime){
            $this->filtreler[$ad][$onem][$cId]=array(
            'deger'=>$fonksiyon,
            'accepted_args'=>$deger,
            'sK'=>$sadeceKelime);
        }
         else{
             $this->filtreler[$ad][$onem][$cId]=array(
            'fonksiyon'=>$fonksiyon,
            'accepted_args'=>$deger,
            'sK'=>$sadeceKelime);
         }
        unset($this->topluFiltreler[$ad]);
    }
    function filtre_sil($ad,$fonksiyon,$onem=10){
        $fSil = self::benzersiz_Filtre_id($ad, $fonksiyon, $onem);

        $varMi = isset($this->filtreler[$ad][$onem][$fSil]);

        if (true === $varMi) {
            unset($this->filtreler[$ad][$onem][$fSil]);
            if (empty($this->filtreler[$ad][$onem]))
                unset($this->filtreler[$ad][$onem]);
            unset($this->topluFiltreler[$ad]);
        }
        return $varMi;
    }
    function tum_filtreleri_sil($ad,$onem=false){
        if (isset($this->filtreler[$ad])) {
                    if (false !== $onem && isset($this->filtreler[$ad][$onem]))
                        unset($this->filtreler[$ad][$onem]);
                    else
                        unset($this->filtreler[$ad]);
                }

                if (isset($this->topluFiltreler[$ad]))
                    unset($this->topluFiltreler[$ad]);

                return true;
    }
    function filtre_sor($ad,$fonksiyon_kontrol=false){
        $sor=!empty($this->filtreler[$ad]);
        if($fonksiyon_kontrol===false || $sor==false)
            return $sor;
        if(!$idSor=self::benzersiz_Filtre_id($ad,$fonksiyon_kontrol,false))
            return false;
        foreach ((array) array_keys($this->filtreler[$ad]) as $onem) {
            if (isset($this->filtreler[$ad][$onem][$idSor]))
                return $onem;
        }
        return false;
    }
    function guncel_filtre(){
        return end($this->guncelFiltre);
    }
    public function filtrele($ad, $deger)
    {
        $depo = array();
        $dondur=null;
        $uFv=array();//call_user_func_array gönderilen Dizisi
        // Do 'all' actions first
        if(isset($this->filtreler["all"]))
        {
            $this->guncelFiltre=$ad;
            $depo=func_get_arg();
            $this->tum_kancalari_cagir($depo);
        }
        if(!isset($this->filtreler[$ad]))
        {
            if(isset($this->filtreler["all"]))
                array_pop($this->guncelFiltre);
            return $deger;
        }
        if (!isset($this->filtreler['hepsi']))
            $this->guncelFiltre[] = $ad;

        // Sort
        if (!isset($this->topluFiltreler[$ad])) {
            ksort($this->filtreler[$ad]);
            $this->topluFiltreler[$ad] = true;
        }
        if (empty($depo))
            $depo = func_get_args();
            $keySifirla = array_map('array_values', $this->filtreler[$ad]);
        do {
            $conDizi=(is_array($keySifirla) ? $keySifirla:(array) $KXC);
            foreach (current($conDizi) as $kx=>$yaz){
                if (isset($yaz['fonksiyon']) && !is_null($yaz['fonksiyon'])) {
                    $depo[1] = $deger;
                }
                if(isset($yaz["deger"])){
                    if(is_array($yaz["deger"])){
                        foreach($yaz["deger"] as $yK)
                             $deger[]=$yK;
                    }else{
                        $deger=$yaz["deger"];
                    }
                }else{
                    if(is_callable($yaz["fonksiyon"]) && $yaz["fonksiyon"] instanceof Closure) {
                $yaz["fonksiyon"]();
                }
                    elseif(function_exists($yaz["fonksiyon"])){
                        /**
                        *@param $uFv değişkeni call_user_func_array fonksiyonunda kullanıcı tanımlı fonksiyona gönderilecek değerleri içerir
                        *@param accepted_args varsa ve gelen değer eğer dizeyse $uFv ile $yaz["accepted_args"] birleştirir $uFv değişkenine atar.
                        * @example call_user_func_array gönderilecek değerleri oluşturur.
                        */
                            $uFv=array_slice($depo, 1, (int) $yaz['accepted_args']);
                            if(isset($yaz["accepted_args"]) && is_array($yaz["accepted_args"]))
                                $uFv=array_merge($uFv,$yaz["accepted_args"]);
                            $deger = call_user_func_array($yaz["fonksiyon"], $uFv);
                        }
                    else{
                        hata_ekle($yaz["fonksiyon"]." fonksiyonu bulunamadı.","hata");
                        return false;
                    }
                }
            }
        } while (next($keySifirla) !== false);

        array_pop($this->guncelFiltre);
            self::islemSayaci($ad);
        return $deger;
    }

    function referans_diziyle_filtrele($ad,$deger){
        // Do 'all' actions first
        if (isset($this->filtrele['all'])) {
            $this->guncelFiltre[] = $ad;
            $depo               = func_get_args();
            $this->tum_kancalari_cagir($depo);
        }

        if (!isset($this->filtrele[$ad])) {
            if (isset($this->filtrele['all']))
                array_pop($this->guncelFiltre);
            return $deger[0];
        }

        if (!isset($this->filtrele['all']))
            $this->guncelFiltre[] = $ad;

        // Sort
        if (!isset($this->topluFiltreler[$ad])) {
            ksort($this->filtrele[$ad]);
            $this->topluFiltreler[$ad] = true;
        }

        reset($this->filtrele[$ad]);

        do {
            foreach ((array) current($this->filtrele[$ad]) as $yaz)
                if (isset($yaz['fonksiyon']) && !is_null($yaz['fonksiyon']))
                    $deger[0] = call_user_func_array($yaz['fonksiyon'], array_slice($deger, 0, (int) $deger['accepted_args']));

        } while (next($this->filtrele[$ad]) !== false);

        array_pop($this->guncelFiltre);

        return $depo[0];
    }
    public function tum_kancalari_cagir($deger)
    {
        reset($this->filtreler['hepsi']);
        do {
            foreach ((array) current($this->filtreler['hepsi']) as $yaz)
                if (isset($yaz['fonksiyon']) && !is_null($yaz['fonksiyon']))
                    call_user_func_array($yaz['fonksiyon'], $depo);

        } while (next($this->filtreler['hepsi']) !== false);
    }
    function dumps(){
        echo "<pre>";
            print_r($this);
                echo "
";} функция benzersiz_Filtre_id ($ ad, $ fonksiyon, $ onem) {stati c $ idSaydir = 0; if (is_string ($ fonksiyon) ) вернуть $ fonksiyon; if (is_object ($ fonksiyon)) $ fonksiyon = array ($ fonksiyon, ''); иначе $ fonksiyon = (array) $ fonksiyon; if (is_object ($ fonksiyon [0])) {if (function_exists) ('spl_object_ha sh')) {return spl_object_ha sh ($ fonksiyon [0], $ fonksiyon [1]);} else {$ nesneId = get_class ($ fonksiyon [0]). $ fonksiyon [1]; if (! isset ($ fonksiyon [0] -> filter_id)) {if (false === $ onem) вернуть false; $ nesneId. = isset ($ this-> filterreler [$ ad] [$ onem])? count ((массив) $$ this-> filterreler [$ ad] [$ onem]): $ idSaydir; $ fonksiyon [0] -> filter_id = $ idSaydir; ++ $ idSaydir;} else {$ nesneId. = $ fonksiyon [ 0] -> filter_id;} вернуть $ nesneId;}} иначе if (is_string ($ fonksiyon [0])) {i f (count ($ fonksiyon)> = 2) возвращает $ fonksiyon [0]. $ Fonksiyon [1]; иначе вернуть $ fonksiyon [0]; }}}

Неисправность Функция 313 строчный код

if(function_exists('spl_object_hash')){
                     return spl_object_hash($fonksiyon[0],$fonksiyon[1]);
                 }else{
                     $nesneId=get_class($fonksiyon[0]).$fonksiyon[1];

функция, от которой была получена ошибка

function benzersiz_Filtre_id($ad,$fonksiyon,$onem){
            static $idSaydir=0;
            if(is_string($fonksiyon))
                return $fonksiyon;
            if(is_object($fonksiyon))
                $fonksiyon=array($fonksiyon,'');
            else
                $fonksiyon=(array) $fonksiyon;
            if(is_object($fonksiyon[0]))
            {
                 if(function_exists('spl_object_hash')){
                     return spl_object_hash($fonksiyon[0],$fonksiyon[1]);
                 }else{
                     $nesneId=get_class($fonksiyon[0]).$fonksiyon[1];
                    if (!isset($fonksiyon[0]->filter_id)) {
                                if (false === $onem)
                                    return false;
                                $nesneId .= isset($this->filtreler[$ad][$onem]) ? count((array) $$this->filtreler[$ad][$onem]) : $idSaydir;
                                $fonksiyon[0]->filter_id = $idSaydir;
                                ++$idSaydir;
                            } else {
                                $nesneId .= $fonksiyon[0]->filter_id;
                            }

                            return $nesneId;
                        }
            } else if (is_string($fonksiyon[0])) {
                    if(count($fonksiyon)>=2)
                    return $fonksiyon[0] . $fonksiyon[1];
                    else
                     return $fonksiyon[0];
            }
        } 

1 Ответ

1 голос
/ 24 апреля 2020

Как задокументировано spl_object_ha sh требуется только один аргумент.

Таким образом, используемая вами часть неверна

if(function_exists('spl_object_hash')){
                     return spl_object_hash($fonksiyon[0],$fonksiyon[1]);
                 }else{
                     $nesneId=get_class($fonksiyon[0]).$fonksiyon[1];
}

Как вам нужен идентификатор (ха sh) одного объекта, я полагаю, вы имеете в виду

return spl_object_hash($fonksiyon);
// or
return spl_object_hash($fonksiyon[0]);

Вы можете удалить часть function_exists, поскольку SPL является частью PHP, начиная с 5.0 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...