{"id":26996,"date":"2016-11-28T15:32:25","date_gmt":"2016-11-28T13:32:25","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=26996"},"modified":"2016-11-28T15:32:25","modified_gmt":"2016-11-28T13:32:25","slug":"runkit-changing-the-php-internals-on-the-fly","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/","title":{"rendered":"runkit &#8211; changing the PHP internals on the fly"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>Here is something I didn&#8217;t know about until today &#8211; PHP&#8217;s <a href=\"http:\/\/php.net\/manual\/en\/book.runkit.php\">runkit extension<\/a>:<\/p>\n<blockquote><p>The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing.<\/p><\/blockquote>\n<p>This blog post &#8211; &#8220;<a href=\"https:\/\/id-rsa.pub\/post\/shimming-php-for-fun-and-profit\/\">Shimming PHP for Fun and Profit<\/a>&#8221; &#8211; demonstrates how to use it with a case for a custom <em>base64_decode()<\/em> and <em>unserialize()<\/em> functions. \u00a0Here is <a href=\"https:\/\/github.com\/alexzorin\/ee_monkey_patch\">the actual code<\/a> on GitHub, which shows off how to use <em>runkit_function_rename()<\/em> and <em>runkit_function_add()<\/em>.<\/p>\n<p>This is not something one would use frequently, but might be an absolute life saver on a rainy day.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Here is something I didn&#8217;t know about until today &#8211; PHP&#8217;s runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post &#8211; &#8220;Shimming PHP for Fun and Profit&#8221; &#8211; demonstrates how to use it with &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">runkit &#8211; changing the PHP internals on the fly<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"runkit - changing the PHP internals on the fly #WebDev #PHP #programming","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[38,1330],"keyring_services":[],"class_list":["post-26996","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-php","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Here is something I didn&#039;t know about until today - PHP&#039;s runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - &quot;Shimming PHP for Fun and Profit&quot; - demonstrates how to use it with\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"Here is something I didn&#039;t know about until today - PHP&#039;s runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - &quot;Shimming PHP for Fun and Profit&quot; - demonstrates how to use it with\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-11-28T13:32:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-11-28T13:32:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Here is something I didn&#039;t know about until today - PHP&#039;s runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - &quot;Shimming PHP for Fun and Profit&quot; - demonstrates how to use it with\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#blogposting\",\"name\":\"runkit \\u2013 changing the PHP internals on the fly - Leonid Mamchenkov\",\"headline\":\"runkit &#8211; changing the PHP internals on the fly\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2016-11-28T15:32:25+02:00\",\"dateModified\":\"2016-11-28T15:32:25+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, PHP, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#listItem\",\"name\":\"runkit &#8211; changing the PHP internals on the fly\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#listItem\",\"position\":4,\"name\":\"runkit &#8211; changing the PHP internals on the fly\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/\",\"name\":\"runkit \\u2013 changing the PHP internals on the fly - Leonid Mamchenkov\",\"description\":\"Here is something I didn't know about until today - PHP's runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - \\\"Shimming PHP for Fun and Profit\\\" - demonstrates how to use it with\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2016\\\/11\\\/28\\\/runkit-changing-the-php-internals-on-the-fly\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2016-11-28T15:32:25+02:00\",\"dateModified\":\"2016-11-28T15:32:25+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov","description":"Here is something I didn't know about until today - PHP's runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - \"Shimming PHP for Fun and Profit\" - demonstrates how to use it with","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#blogposting","name":"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov","headline":"runkit &#8211; changing the PHP internals on the fly","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2016-11-28T15:32:25+02:00","dateModified":"2016-11-28T15:32:25+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#webpage"},"articleSection":"All, Programming, Technology, Web work, PHP, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#listItem","name":"runkit &#8211; changing the PHP internals on the fly"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#listItem","position":4,"name":"runkit &#8211; changing the PHP internals on the fly","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/","name":"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov","description":"Here is something I didn't know about until today - PHP's runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - \"Shimming PHP for Fun and Profit\" - demonstrates how to use it with","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2016-11-28T15:32:25+02:00","dateModified":"2016-11-28T15:32:25+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov","og:description":"Here is something I didn't know about until today - PHP's runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - &quot;Shimming PHP for Fun and Profit&quot; - demonstrates how to use it with","og:url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2016-11-28T13:32:25+00:00","article:modified_time":"2016-11-28T13:32:25+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"runkit \u2013 changing the PHP internals on the fly - Leonid Mamchenkov","twitter:description":"Here is something I didn't know about until today - PHP's runkit extension: The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing. This blog post - &quot;Shimming PHP for Fun and Profit&quot; - demonstrates how to use it with","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"26996","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 09:21:52","updated":"2026-01-15 12:28:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\trunkit \u2013 changing the PHP internals on the fly\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"runkit &#8211; changing the PHP internals on the fly","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/28\/runkit-changing-the-php-internals-on-the-fly\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18469,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/07\/07\/php-net-design-updated\/","url_meta":{"origin":26996,"position":0},"title":"PHP.net design updated","author":"Leonid Mamchenkov","date":"July 7, 2013","format":false,"excerpt":"\u00a0 It's been a long time pending, but finally, PHP.net updated the design of the website. \u00a0The new one doesn't look anymore that it was done in 1974. \u00a0It's fresh, nice, yet keeps somewhat of the same familiar feeling of the old one. \u00a0The search box looks to be updated\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"php.net","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/07\/php.net_-500x234.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":16527,"url":"https:\/\/mamchenkov.net\/wordpress\/2012\/07\/20\/wp-config-php-and-standalone-scripts\/","url_meta":{"origin":26996,"position":1},"title":"wp-config.php and standalone scripts","author":"Leonid Mamchenkov","date":"July 20, 2012","format":false,"excerpt":"WordPress plugin architecture is great and it provides developers with a lot of flexibility. \u00a0But once in a while one needs to write a standalone script that should use some of WordPress settings. \u00a0For example, a script that would have the same database credentials as a WordPress instance. \u00a0This sounds\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28623,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/11\/top-100-php-functions\/","url_meta":{"origin":26996,"position":2},"title":"Top 100 PHP functions","author":"Leonid Mamchenkov","date":"June 11, 2018","format":false,"excerpt":"\"Top 100 PHP functions\" is a list of the top 100 most frequently used PHP functions, from the analysis of the 1,900 open source projects.\u00a0 \u00a0If you are still learning PHP, this list is a good overview of what you'll see the most in real life projects.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28418,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/02\/27\/github-quickly-review-changed-functions-in-your-php-pull-requests\/","url_meta":{"origin":26996,"position":3},"title":"GitHub : Quickly review changed functions in your PHP pull requests","author":"Leonid Mamchenkov","date":"February 27, 2018","format":false,"excerpt":"GitHub is one of the greatest tools for developers ever.\u00a0 And it keeps getting better.\u00a0 Most of the new features that GitHub introduces are usually generic and apply to all developers universally.\u00a0 Today, however, they have a special present for the PHP developers -\u00a0Quickly review changed functions in your PHP\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/02\/github-php-500x221.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26956,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/11\/25\/chrome-extension-var_masterpiece-turn-php-var_dump-into-a-thing-of-beauty\/","url_meta":{"origin":26996,"position":4},"title":"Chrome Extension : var_masterpiece &#8211; turn PHP var_dump() into a thing of beauty","author":"Leonid Mamchenkov","date":"November 25, 2016","format":false,"excerpt":"Var Masterpiece is a Google Chrome add-on, which formats PHP var_dump() output into\u00a0something much more beautiful and useful. \u00a0You can customize the type colors and a few other things in the extension options, once installed.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"var_masterpiece","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/11\/var_masterpiece-500x210.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":27320,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/10\/php-assertions\/","url_meta":{"origin":26996,"position":5},"title":"PHP assertions","author":"Leonid Mamchenkov","date":"February 10, 2017","format":false,"excerpt":"When I hear the word \"assertion\", the first thing that comes to my mind is PHPUnit assertions. \u00a0Sure, I write assertions in my unit tests. \u00a0But is that the only application? \u00a0Today I decided to figure it out, or, at least, learn more about the subject. It turns out that\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=26996"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26996\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=26996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=26996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=26996"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=26996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}