phpتابعی – قسمت ۱ – Anonymous functions در php5.3

Anonymous functions

What are Anonymous Functions and Closures?

Anonymous function ها که با نام closure ها نیز شناخته میشن بهمون اجازه میده توابعی بدون نام بسازیم و اونها رو تو متغیر ها بریزیم یا به عنوان CallBack ازشون استفاده کنیم و حتی میشه از تابعی دیگه اونها رو بازگشت داد . البته فقط در php 5.3 .
اونهایی که از جاوا اسکریپت استفاده می کنن حتما بارها از توابع بدون نام استفاده کردن.

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>

 

<?php
$lambda = function() {
            echo "I am an anonymous function,
                  aka a lambda!<br />";
            };//متغیر با یک تابع بی نام مقدار دهی میشه
$anonymousFunction = $lambda; //تابع بی نام به متغیر دیگه ای نیز اختصاص میدیم دقیقا مثل یک رشته
$anonymousFunction();
// Output: I am an anonymous function, aka a lambda!

function nCallsTo($n, $function) {
    for($i = 0; $i < $n; $i++) {
        $function();
    }
    return function() { echo "I am also an anonymous function!<br />"; };
    //یک تابع بی نام توسط تابعی دیگه بازگشت داده میشه
}

$anotherAnon = nCallsTo(3, $anonymousFunction);
// Output:
// I am an anonymous function, aka a lambda!
// I am an anonymous function, aka a lambda!
// I am an anonymous function, aka a lambda!

$anotherAnon();
// Output: I am also an anonymous function!
?>

توابع بی نام دست برنامه نویسهای php رو برای استفاده از high-order function باز میزاره.nCallsTo دقیقا یک تابع high-order است.این نوع توابع یک کار از ۲ کار زیر رو حتما باید انجام بدن:
۱)تابعی رو به عنوان ورودی گرفته ۲)یک تابع رو برگشت بدن

از این تکنیک (توابع high-order ) میشه دقیقا در داخل دستور map / reduce استفاده کرد.نکته اینه که lambda و توابع بی نام دقیقا یک چیز هستند :توابع می تونن [داخل | مقدار] یک متغیر باشند.

اگر توابع [ یک مقدار | مقدار یک متغیر ] باشند،php نوعشونو چی تشخیص میده؟

<?php
$lambda = function() { echo "anonymous function"; };
echo gettype($lambda) . '<br />';
// Output: object
echo get_class($lambda) . '<br />';
// Output: Closure
?>

تشخیص درخواست های ajax در php

همیشه نوشتن صفحاتی که هم از URL و هم از طریق فانکشن کار کنه لذت بخشه.چون با چند خط اضافه کد نوشتن میتونیم از آپلود و ویرایش کردن صفحات مختلف جلوگیری کنیم.البته در بعضی از اوقات  صفحات فقط باید از طریق درخواست های ajax پاسخگو باشند،در این مواقع میتونیم برای دفع کنجکاوی های (حملات) نه چندان مهم از هدرها استفاده کرد.

[HTTP_X_REQUESTED_WITH] => XMLHttpRequest

if( isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/* special ajax here */
}

تغییر پسورد کاربران وردپرس در phpMyAdmin

چون خودم به این مشکل دچار شدم راه حلشو مینویسم:

How to reset my WordPress admin password

UPDATE `wp_users` SET `user_pass` = MD5( 'new_password_here' ) WHERE `wp_users`.`user_login` = "admin_username";