การเย็บปะติดปะต่อกันใช้การนิยามใหม่ (การจับคู่ลิง) ของฟังก์ชั่นและวิธีการใน PHP ซึ่งรวมถึงการเรียกผู้ใช้ที่กำหนดและภายในซึ่งอาจเป็นฟังก์ชั่นวิธีการคลาสหรือวิธีการอินสแตนซ์ นอกจากนี้โครงสร้างที่มีลักษณะคล้ายฟังก์ชั่นจำนวนมากเช่น exit
หรือ include
ได้รับการสนับสนุนในลักษณะที่คล้ายคลึงกัน
ภายในการเย็บปะติดปะต่อกันใช้ wrapper สตรีมใน file://
ในกรณีของฟังก์ชั่นและวิธีการที่ผู้ใช้กำหนดจะใช้ในการฉีดตัวอย่างสกัดกั้นอย่างง่ายไปยังจุดเริ่มต้นของการเรียกร้องทุกครั้ง สำหรับประเภทที่เหลือของ callables มีการใช้กลยุทธ์อื่น ๆ อีกมากมาย
use function Patchwork {redefine, relay, getMethod};
$ profiling = fopen ( ' profiling.csv ' , ' w ' );
redefine ( ' App* ' , function (... $ args ) use ( $ profiling ) {
$ begin = microtime ( true );
relay (); # calls the original definition
$ end = microtime ( true );
fputcsv ( $ profiling , [ getMethod (), $ end - $ begin ]);
});
restoreAll()
และ restore($handle)
สิ้นสุดอายุการใช้งานตามลำดับใหม่ใหม่ทั้งหมดหรือเพียงหนึ่งในนั้นโดยที่ $handle = redefine(...)
$this
จะถูกผูกไว้กับคลาสที่ล้อมรอบโดยอัตโนมัติของวิธีการที่ถูกกำหนดใหม่__CLASS__
, static::class
ฯลฯ ภายในนิยามใหม่โดยไม่สนใจคำอุปมา getClass()
, getCalledClass()
, getMethod()
และ getFunction()
จากเนมสเปซของ Patchwork
ควรใช้แทน การเย็บปะติดปะต่อกันสามารถใช้กับวิธีการคงที่ซึ่งเป็นวิธีปฏิบัติที่ขัดแย้งกัน
ควรใช้อย่างรอบคอบนั่นคือหลังจากทำให้ตนเองคุ้นเคยกับข้อผิดพลาดและการล่อลวงในภาษาการเขียนโปรแกรมอื่น ๆ ตัวอย่างเช่นใน JavaScript, Ruby, Python และอื่น ๆ การสนับสนุนดั้งเดิมสำหรับการจับคู่ลิงได้ทำให้การทดสอบที่เกี่ยวข้องกับการใช้งานทั่วไปมากกว่าใน PHP
การทดสอบที่ใช้การจับคู่ลิงมักจะไม่ทดสอบ หน่วย อีกต่อไปเนื่องจากพวกเขามีความอ่อนไหวต่อรายละเอียดของการใช้งานไม่เพียง แต่อินเทอร์เฟซ: ตัวอย่างเช่นการทดสอบดังกล่าวอาจไม่ผ่านหลังจากสลับจาก time()
ไปยัง DateTime
อีกต่อไป
ที่ถูกกล่าวว่าพวกเขายังคงมีสถานที่ที่ทางเลือกที่มีศักยภาพทางเศรษฐกิจเพียงอย่างเดียวคือไม่มีการทดสอบเลย
ไม่แนะนำให้มีการเย็บปะติดปะต่อกันสำหรับ AOP และการใช้งานการผลิตประเภทอื่น ๆ ผลกระทบต่อประสิทธิภาพของแอปพลิเคชันมีแนวโน้มสูงที่จะมีขนาดใหญ่อย่างห้าม นอกจากนี้ในขณะที่ไม่มีความเสี่ยงด้านความปลอดภัยที่เกี่ยวข้องกับการเย็บปะติดปะต่อ กัน เป็นที่รู้จักหรือคาดการณ์ไว้โปรดทราบว่าการเย็บปะติดปะต่อกันไม่เคยพัฒนาโดยคำนึงถึงสภาพแวดล้อมการผลิต