"Deprecated: str_replace(): Passing null to parameter" hatası
Herkese merhaba.
Aşağıdaki hatayı alıyorum, sorunu nasıl çözebilirim.
Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
PHP Sürümüm 8.2.13
<?php
$patterns = [
'{url}' => '([0-9a-zA-Z]+)',
'{id}' => '([0-9]+)'
];
$url = str_replace(array_keys($patterns), array_values($patterns), $url);
// Şu şekilde denedim ama yine aynı hatayı alıyorum.
$url = $url ? str_replace(array_keys($patterns), array_values($patterns), $url) : "";
gokcin hocam url bir fonksiyon üzerinden geliyor.
Tam kodum şu şekilde.
<?php
$route = 0;
function parseUrl()
{
$dirname = dirname($_SERVER['SCRIPT_NAME']);
$dirname = $dirname != '/' ? $dirname : null;
$basename = basename($_SERVER['SCRIPT_NAME']);
$request_uri = str_replace([$dirname, $basename], null, $_SERVER['REQUEST_URI']);
return $request_uri;
}
function run($url, $callback, $methods = 'get')
{
$methods = explode('|', strtoupper($methods));
if (in_array($_SERVER['REQUEST_METHOD'], $methods))
{
$patterns = [
'{url}' => '([0-9a-zA-Z]+)',
'{id}' => '([0-9]+)'
];
$url = $url ? str_replace(array_keys($patterns), array_values($patterns), $url) : "";
$request_uri = parseUrl();
if (preg_match('@^' . $url . '$@', $request_uri, $parameters))
{
unset($parameters[0]);
global $route;
$route += 1;
if (is_callable($callback)){
call_user_func_array($callback, $parameters);
} else {
$explode = explode('@', $callback); // $callback'i controller ve method olacak şekilde parçala.
$controller = explode('/', $explode[0]); // controller klasöründe bulunan klasör içerisindeki dosya ismini alabilmek için parçala
$controller = end($controller); // Dosya ismini al
$method = $explode[1]; // Method ismi
$controllerFile = CONTROLLERS_DIR . strtolower($explode[0]) . '.php';
if (file_exists($controllerFile)) {
require $controllerFile;
controller($controller, $method, $parameters);
}else{
echo $controller." dosyası bulunamadı!";
}
}
}
}
}
function notfound()
{
global $route;
if($route == 0)
{
header('Location: '.URL.'/404');
}
}
Örnek run fonksiyonu kullanımı
run("/blog/goster/{id}","blog@tek_blog");